MongoDB基本操作

1. 文档的插入

1.1 单个文档的插入

db.collection.insertOne()

向集合中插入文档,如果该集合当前不存在,则插入操作将创建该集合。
如果文档未指定==_id字段,则MongoDB将具有Objectid值的_id==字段添加到新文档中。
MongoDB中的所有写操作都是单个文档级别的原子操作。
例

  • 文档中的键/值对是有序的
  • 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)
  • MongoDB区分类型和大小写
  • MongoDB的文档不能有重复的键

1.2 批量插入

db.collection.insertMany()

可以将多个文档插入一个集合中。将文档数组传递给该方法。

db.comment.insertMany([{},{},{},…,{}])

  • 插入时指定了==_id==,则主键就是该值。
  • 如果某条数据插入失败,将会终止插入,但是已经插入成功数据不会回滚,因此可以用try…catch…捕获异常

2. 文档的查询

db.collection.find(< query >,[projection])

关键词

2.1 查询所有

db.comment.find()
db.comment.find({})
db.comment.find({}).pretty() 格式化显示

2.2 查询过滤条件

要制定相等条件,请在查询筛选文档使用< field >:< value >表达式
例如:

查询articleid为100001的文档
db.comment.find({articleid:“100001”})

查询articleid为100001并且userid为1002的文档
db.comment.find({articleid:“100001”,userid:“1002”})

2.3 查询投影

查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定字段)。
例子:

查询结果articleid为100001的数据,并且只显示userid、nickname字段,不显示_id:
db.comment.find({articleid:“100001”},{userid:1,nickname:1,_id:0})

2.4 统计查询

db.cillection.count(query,options)

统计查询
例子:

  • 统计所有记录数:
    统计comment集合的所有的文档数:

db.comment.count()

  • 按条件统计记录数:
    统计userid为1003的文档条数:

db.comment.count({userid:“1003”})

2.5 分页列表查询

可以使用==limit()==方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。

db.cillection.find().limit(NUMBER).skip(NUMBER)

2.6 排序查询

==sort()==方法对数据进行排序,sort()方法可以通过参数指定排序的字段,1为升序,-1为降序

db.collection.find().sort({KEY:1})

例如:

对userid降序排列,并对likenum进行升序排列
db.comment.find().sort({userid:-1,likenum:1})

优先级
skip(),limit(),sort()三个放在一起执行,执行的顺序是sort(),skip(),limit()

2.7 比较查询

db.collection.find({“field”:{KaTeX parse error: Expected 'EOF', got '}' at position 9: gt:value}̲})//大于:field>va…lt:value}})//小于:field<value
db.collection.find({“field”:{KaTeX parse error: Expected 'EOF', got '}' at position 10: gte:value}̲})//大于等于:field>…lte:value}})//小于等于:field<=value
db.collection.find({“field”:{$ne:value}})//不等于:field!=value

例如:查询评论点赞数大于700的文档

db.comment.find({likenum:{$gt:700}})

2.8 包含查询

  • 包含使用==$in==操作符。
    查询评论的集合中userid字段包含1003或1004的文档

db.comment.find({userid:{$in:[“1003”,“1004”]}})

  • 不包含使用==$nin==操作符。

查询评论的集合中userid字段不包含1003或1004的文档

db.comment.find({userid:{$nin:[“1003”,“1004”]}})

2.9 条件连接查询

  • 需要查询同时满足两个以上条件,需要使用==$and==操作符将条件进行关联

$and:[{},{},{}]

例如:查询评论集合中likenum大于等于700并且小于2000的文档:

db.comment.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: and:[{likenum:{gte:700}},{likenum:{$lt:2000}}]})

  • 如果是或者的关系,则用==$or==操作符进行关联,与上文格式相同

$or:[{},{},{}]

3. 文档的更新

3.1 更新单个文档

$set修改字段值
例如:修改_id为2的记录,浏览量为889:

db.comment.updateOne({_id:“2”},{$set:{likenum:NumberInt(889)}})

3.2 更新多个文档

使用

db.collection.updateMany()

方法来更新多个文档
例如:更新所有用户为1003的用户的昵称为 嘉然小姐的狗:

db.comment.updateMany({userid:“1003”},{$set:{nickname:"嘉然小姐的狗“}})

3.3 更换文档

要更换_id字段以外的文档的全部内容,请将一个全新的文档作为第二个参数传递给

db.collection.replaceOne()

当替换一个文档时,替换文档必须只包含字段/值对,即不包含更新操作符表达式。
替换文档可以具有与原始文档不同的字段。在替换文档中,由于_id字段时不可变的,因此可以省略_id字段,如果包含,则它必须与当前值具有相同的值。
例如:更新_id为3的文档

db.comment.replaceOne({_id:“3”},{userid:“9999”})

4. 文档的删除

4.1 删除所有符合条件的文档

例如:删除_id为3的文档

db.comment.deleteMany({_id:“3”})

4.2 仅删除一个符合条件的文档

db.collection.deleteOne()

4.3 删除集合中所有文档

db.collection.Many({})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值