mongodb安装与增删改查

mongodb安装与增删改查,第1张

概述一、安装 安装包地址:https://www.mongodb.com/download center/enterprise 直接双击安装,不过得选择自定义安装,便于找到你自己的目录位置。 我选择的路径 一、安装

安装包地址:https://www.mongodb.com/download-center/enterprise

直接双击安装,不过得选择自定义安装,便于找到你自己的目录位置。

我选择的路径是:G:\MongoDB

配置环境变量:G:\MongoDB\bin

启动mongodb服务端:

mongod --dbpath G:\MongoDB\data\db --port 27017 --bind_ip 127.0.0.1  #必须指定数据库文件夹的位置。

客户端连接.

mongo --port 27017 --host 127.0.0.1

每次使用mongodb时,都需要启动数据库,非常麻烦,我们可以设置mongo为系统服务,让其在后台自动运行,

注意配置服务 *** 作,必须用管理员权限的命令窗口。

创建目录    ‪md G:\MongoDB\data #有的话,可以不创建。    md G:\MongoDB\log #存放日志的文件夹。安装服务    mongod --dbpath G:\MongoDB\data\db --logpath  G:\MongoDB\log\log.log  --logappend  --servicename MongoDB --bind_ip 0.0.0.0 --install移除服务    mongod --dbpath G:\MongoDB\data\db --logpath  G:\MongoDB\log\log.log  --logappend  --servicename MongoDB --bind_ip 0.0.0.0 --remove启动服务    net start MongoDB    关闭服务    net stop MongoDB
二、基本命令2.1、关系型数据库与mongodb对应关系
MysqL         mongodbdb               dbtables         collectionsrow(行)         documentcolum(列)       fIEld
2.2、基本 *** 作
use db 使用数据库,show dbs 查看当前多有的数据库show tables 查看数据表(collections)db 查看当前使用的是哪一个数据库db.createCollection('user') #创建user表(集合)db.dropDatabase() #删除当前使用的数据库db.info.drop() 删除表
三、增删改查3.1、增加
#单条数据插入(insertOne)> db.user.insertOne({name:'zs'}){        "ackNowledged" : true,"insertedID" : ObjectID("5e81d622d99e6fe305451329")}#多条数据插入(insertMany)> db.user.insertMany([{name:'erha'},{name:'huahua',age:18}]){        "ackNowledged" : true,"insertedIDs" : [                ObjectID("5e81d683d99e6fe30545132a"),ObjectID("5e81d683d99e6fe30545132b")        ]}#既可以插入单条数据,也可以插入多条数据(insert)> db.goods.insert()
3.2、查询数据准备
[{"goods_ID": 1,"cat_ID": 4,"goods_name": "KD876","goods_number": 1,"click_count": 7,"shop_price": 1388.0,"add_time": 1240902890},{"goods_ID": 4,"cat_ID": 8,"goods_name": "诺基亚N85原装充电器","goods_number": 17,"click_count": 0,"shop_price": 58.0,"add_time": 1241422402},{"goods_ID": 3,"goods_name": "诺基亚原装5800耳机","goods_number": 24,"click_count": 3,"shop_price": 68.0,"add_time": 1241422082},{"goods_ID": 5,"cat_ID": 11,"goods_name": "索爱原装M2卡读卡器","goods_number": 8,"shop_price": 20.0,"add_time": 1241422518},{"goods_ID": 6,"goods_name": "胜创KINGMAX内存卡","goods_number": 15,"shop_price": 42.0,"add_time": 1241422573},{"goods_ID": 7,"goods_name": "诺基亚N85原装立体声耳机HS-82","goods_number": 20,"shop_price": 100.0,"add_time": 1241422785},{"goods_ID": 8,"cat_ID": 3,"goods_name": "飞利浦9@9v","click_count": 9,"shop_price": 399.0,"add_time": 1241425512},{"goods_ID": 9,"goods_name": "诺基亚E66","goods_number": 4,"click_count": 20,"shop_price": 2298.0,"add_time": 1241511871},{"goods_ID": 10,"goods_name": "索爱C702c","goods_number": 7,"click_count": 11,"shop_price": 1328.0,"add_time": 1241965622},{"goods_ID": 11,"shop_price": 1300.0,"add_time": 1241966951},{"goods_ID": 12,"goods_name": "摩托罗拉A810","click_count": 13,"shop_price": 983.0,"add_time": 1245297652}]
3.2.1、方法使用
#查询一个满足条件的数据(findOne({条件},{显示的列}))> db.goods.findOne(){        "_ID" : ObjectID("5e81eb281753c31a4979041f"),"goods_ID" : 1,"cat_ID" : 4,"goods_name" : "KD876","goods_number" : 1,"click_count" : 7,"shop_price" : 1388,"add_time" : 1240902890}#查询所有满足条件的数据(findOne({条件},{显示的列}))> db.goods.find({},{"goods_name":1,"_ID":0}){ "goods_name" : "KD876" }{ "goods_name" : "诺基亚N85原装充电器" }{ "goods_name" : "诺基亚原装5800耳机" }{ "goods_name" : "索爱原装M2卡读卡器" }{ "goods_name" : "胜创KINGMAX内存卡" }{ "goods_name" : "诺基亚N85原装立体声耳机HS-82" }{ "goods_name" : "飞利浦9@9v" }{ "goods_name" : "诺基亚E66" }{ "goods_name" : "索爱C702c" }{ "goods_name" : "索爱C702c" }{ "goods_name" : "摩托罗拉A810" }
3.2.2、查询条件

1、查询goods_ID 为5的商品名

> db.goods.find({goods_ID:5},{goods_name:1}){ "_ID" : ObjectID("5e81eb281753c31a49790422"),"goods_name" : "索爱原装M2卡读卡器" }

2、查询 goods_ID 大于10的商品名

> db.goods.find({goods_ID:{$gt:10}},{goods_name:1}){ "_ID" : ObjectID("5e81eb281753c31a49790428"),"goods_name" : "索爱C702c" }{ "_ID" : ObjectID("5e81eb281753c31a49790429"),"goods_name" : "摩托罗拉A810" }

3、小于($lt),不等于($ne),小于等于($lte),大于等于($gte)

> db.goods.findOne({goods_ID:{$ne:10}},{goods_name:1}){ "_ID" : ObjectID("5e81eb281753c31a4979041f"),"goods_name" : "KD876"

4、在其中($in),不在其中($nin)

> db.goods.findOne({goods_ID:{$in:[1,2,3]}},"goods_name" : "KD876" }> db.goods.findOne({goods_ID:{$nin:[1,{goods_name:1}){        "_ID" : ObjectID("5e81eb281753c31a49790420"),"goods_name" : "诺基亚N85原装充电器"}

5、所有都需要满足($all)

> use studentswitched to db student> db.info.insert({name:"erha",hoppy:[1,3]})WriteResult({ "nInserted" : 1 })> db.info.find({hoppy:{$all:[1,2]}}) #对应数组内的都需要满足。  { "_ID" : ObjectID("5e8203c51753c31a4979042a"),"name" : "erha","hoppy" : [ 1,3 ] }

6、存在性($exists)

> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),3 ] }{ "_ID" : ObjectID("5e8205111753c31a4979042b"),"name" : "huahua" }> db.info.find({hoppy:{$exists:0}}){ "_ID" : ObjectID("5e8205111753c31a4979042b"),"name" : "huahua" }> db.info.find({hoppy:{$exists:1}}){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),3 ] }

7、逻辑非 ($nor),逻辑与 ($and),逻辑或 ($or),使用方法一致

#取出商品ID大于5小于10的商品> db.goods.find({$and:[{goods_ID:{$gt:5}},{goods_ID:{$lt:10}}]}),{goods_ID:1,goods_name:1,_ID:0}){ "goods_ID" : 6,"goods_name" : "胜创KINGMAX内存卡" }{ "goods_ID" : 7,"goods_name" : "诺基亚N85原装立体声耳机HS-82" }{ "goods_ID" : 8,"goods_name" : "飞利浦9@9v" }{ "goods_ID" : 9,"goods_name" : "诺基亚E66" }#取出 cat_ID 不等于3 且 cat_ID 不等于11的商品> db.goods.find({cat_ID:{$nin:[3,11]}})> db.goods.find({$nor:[{cat_ID:3},{cat_ID:11}]})> db.goods.find({$and:[{cat_ID:{$ne:3}},{cat_ID:{$ne:11}}]})#嵌套#取出 cat_ID 为3,或者4,且价格 大于1000小于2000的商品> db.goods.find({$and:[{cat_ID:{$in:[3,4]}},{$and:[{shop_price:{$gt:1000}},{shop_price:{$lt:2000}}]}]},{_ID:0,cat_ID:1,shop_price:1}){ "cat_ID" : 4,"shop_price" : 1388 }{ "cat_ID" : 3,"shop_price" : 1328 }{ "cat_ID" : 3,"shop_price" : 1300 }
3.3、删除
#1、删除一个(deleteOne({条件}))> db.goods.deleteOne({cat_ID:{$in:[1,3]}}){ "ackNowledged" : true,"deletedCount" : 1 }#2、删除匹配到的全部(deleteOne({条件}))> db.goods.deleteMany({cat_ID:3}){ "ackNowledged" : true,"deletedCount" : 3 }#此时在对cat_ID=3的进行查询> db.goods.find({cat_ID:3})>         #此时没得数据..
3.4、更新
#1、update({条件},{新值},{选项})既可以更新一个,也可以更新多个,但是不加限定的话,更新其实是文档替换。选项:{upsert:true/false},为 True:有则改之,无则增加。为 False:有则改之,无则跳过。> db.info.update({name:"ngls"},{name:"nglszs"},{upsert:true})> db.info.update({name:"ngl"},{name:"nglsz"},{upsert:false})初始值如下> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"name" : "huahua" }{ "_ID" : ObjectID("5e82116d22a16007999bc722"),"name" : "zs","age" : 18 }> db.info.update({name:"zs"},{name:"ls"})> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"name" : "ls" }没有加限定的时候,就会进行文档替换,这并不是我们想看到的,我们需要借助修改器。> db.info.insert({name:'zs',age:18})> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"name" : "ls" }{ "_ID" : ObjectID("5e8212e822a16007999bc723"),"age" : 18 }#修改器$set  #修改某个字段> db.info.update({name:"zs"},{$set:{name:"ww"}})> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"name" : "ww","age" : 18 }$unset #删除某个字段> db.info.update({name:"erha"},{$unset:{hoppy:1}})> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"name" : "erha" }{ "_ID" : ObjectID("5e8205111753c31a4979042b"),"age" : 18 }$rename #重命名某个字段> db.info.update({name:"ls"},{$rename:{name:"neck"}})> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"neck" : "ls" }{ "_ID" : ObjectID("5e8212e822a16007999bc723"),"age" : 18 }$inc    #自增长> db.info.update({name:"ww"},{$inc:{age:2}}) #每次增长2> db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"age" : 20 }## updateOne,updateMany,必须指定修改器,不然会报错。#2、更新一个(updateOne({条件},{新值}))> db.info.updateOne({name:'ww'},{$set:{name:"zl"}})>  db.info.find(){ "_ID" : ObjectID("5e8203c51753c31a4979042a"),"name" : "zl","age" : 20 }#3、更新全部(updateMany({条件},{新值}))
四、聚合 *** 作(aggregate)4.1、管道

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道 *** 作是可以重复的。

$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询 *** 作。$limit:用来限制MongoDB聚合管道返回的文档数。$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。$group:将集合中的文档分组,可用于统计结果。$sort:将输入文档排序后输出。$geoNear:输出接近某一地理位置的有序文档。4.2、聚合
表达式描述
$sum计算总和。
$avg计算平均值
$min获取集合中所有文档对应值得最小值。
$max获取集合中所有文档对应值得最大值。
$push在结果文档中插入值到一个数组中。
$addToSet在结果文档中插入值到一个数组中,但不创建副本。
$first根据资源文档的排序获取第一个文档数据。
$last根据资源文档的排序获取最后一个文档数据
4.3、格式
db.集合名.aggregate([{管道1},{管道2})
4.4、示例
#查询不同 cat_ID 下的商品数量。> db.goods.aggregate([{$group:{_ID:"$cat_ID",num:{$sum:1}}}]){ "_ID" : 4,"num" : 1 }{ "_ID" : 11,"num" : 2 }{ "_ID" : 8,"num" : 3 }#查询 该表下的商品数量> db.goods.find().count()6> db.goods.aggregate([{$group:{_ID:null,num:{$sum:1}}}]){ "_ID" : null,"num" : 6 }#查询不同 cat_ID 下商品价格大于 50 的商品数量> db.goods.aggregate([{$match:{shop_price:{$gt:50}}},{$group:{_ID:"$cat_ID","num" : 1 }{ "_ID" : 8,"num" : 3#查询不同 cat_ID 下商品总库存> db.goods.aggregate([{$group:{_ID:"$cat_ID",num:{$sum:"$goods_number"}}}]){ "_ID" : 11,"num" : 23 }{ "_ID" : 4,"num" : 61 }#查询不同 cat_ID 下商品价格大于 50 的商品数量 并且每个类别下的数量大于2> db.goods.aggregate([{$match:{shop_price:{$gt:50}}},num:{$sum:1}}},{$match:{num:{$gt:2}}}]){ "_ID" : 8,"num" : 3 }#查询不同 cat_ID 下商品总库存,并且排序> db.goods.aggregate([{$group:{_ID:"$cat_ID",num:{$sum:"$goods_number"}}},{$sort:{num:1}}]){ "_ID" : 4,"num" : 23 }{ "_ID" : 8,"num" : 61 }#查询不同 cat_ID 下的平均价格,按照由高到低排序> db.goods.aggregate([{$group:{_ID:"$cat_ID",price:{$avg:"$shop_price"}}},{$sort:{price:-1}}]){ "_ID" : 4,"price" : 1388 }{ "_ID" : 8,"price" : 75.33333333333333 }{ "_ID" : 11,"price" : 31 }#查询不同 cat_ID 下的平均价格,按照由高到低排序,只返回lianggedb.goods.aggregate([{$group:{_ID:"$cat_ID",{$sort:{price:-1}},{$limit:2}]){ "_ID" : 4,"price" : 75.33333333333333 }
总结

以上是内存溢出为你收集整理的mongodb安装与增删改查全部内容,希望文章能够帮你解决mongodb安装与增删改查所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1152045.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存