基本命令行操作
添加数据
db.集合名.insertOne({},{writeConcern:0})
writeConcern:安全级别
0:不关心是否写成功
1-n:写操作需要被复制到n个节点才算写成功
majority:写操作需要被复制到大多数节点才算写成功
db.集合名.insertMany([{},{}],{writeConcern:3,ordered:true})
ordered:是否按顺序写入
true:顺序写入,一旦遇到错误便退出,剩余文档无法写入
false:乱序写入,遇到错误不影响其他文档的写入
db.集合名.insert() 支持explain命令
插入时主键可自定义,组件可使用复合主键(对象),对象字段顺序变了属于不同主键
查询数据
db.集合名.find() 查询索引文档
db.集合名.find().pretty() 格式化查询出的文档
db.集合名.find({"a":"abc"}) 多条件查询
db.集合名.find({"a.b":"abc"}) 嵌套对象查询
db.集合名.find({},{a:1) 返回指定字段,1:返回,0:不返回
db.集合名.find({$and:[{},{}]}) 条件查询($and,$not,$or,$nor)
SQL MQL a != 1 {a:{$ne:1}} a > 1 {a:{$gt:1}} a >= 1 {a:{$gte:1}} a < 1 {a:{$lt:1}} a <= 1 {a:{$lte:1}} in {a:{$in:[x,y,z]}} not in {a:{$nin:[x,y,z]}} a is null {a:{$exists:false}} db.集合名.find().skip(1).limit(1) skip:跳过几条数据,limit:限制结果几条数据
db.集合名.count() 统计数据
db.集合名.find().sort({a:1}).skip(1).limit(1) 排序,1:正序,2:倒序
(sort,skip,limit顺序不能乱)
db.集合名.find({a:{$slice:1}}) #slice:返回数组部分元素,2:前两条,-2:后两条,[1,2]:跳过第一条,返回前两条,和skip,limit对应
db.集合名.find({a:{$elementMatch:{$eq:"a"}}}) 数组元素匹配
更新数据
db.集合名.update( <query>,<update>,<options>)<query> 定义了更新时的筛选条件<update> 文档提供了更新内容<options> 声明了一些更新操作的参数updateOne/updateMany 方法要求更新条件部分必须具有以下之一,否则将报错$set 给符合条件的文档新增一个字段,有该字段则修改其值$unset 给符合条件的文档,删除一个字段$push: 增加一个对象到数组底部$pop:从数组底部删除一个对象$pull:如果匹配指定的值,从数组中删除相应的对象$pullAll:如果匹配任意的值,从数据中删除相应的对象$addToSet:如果不存在则增加一个值到数组$rename 重命名字段$inc 加减字段值$mul 相乘字段值$min 采用最小值$max 次用最大值
删除数据
db.集合名.remove(<query>,<options>) 默认删除所有db.集合名.drop( { writeConcern:<doc>}) 删除集合