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({})