$addToSet->过滤避免重复
var query =[
{
userName:'Bob',
say: "Hi"
},
{
userName:'Bob',
say: "Hi"
},
{
userName:'Bob',
say: "Hi"
},
{
userName:'Bob',
say: "Hello"
},
]
db.test.update({name:'name18'},{'$addToSet':{'comments':{'$each':query}}})
$pop ->删除数组中中一项
- 删除第一项
db.test.update({name:'name19'},{$pop:{comments:-1}})
$pull ->删除指定内容的数据
db.test.update({name:'name19'},{$pull:{comments:{say:'Hello'}}})
下表操作符
db.test.update({name:'name19'},{$set:{'comments.0.say':'6666'}})
//'comments.0.say'一定要引号
db.test.update({'comments.userName':'Bob'},{$set:{'comments.$.userName':'Robot'}})
//$匹配全部占位符 匹配全部数据
查询
db.test.find({age:{$lte:40,$gt:20}})
upsert
- 直接使用 db.test.update({name:18},{$set:{age:18}}) 如果没有这个文档
- db.test.update({name:18},{$set:{age:18}},true) 只对一个起作用
- db.test.update({name:18},{$set:{age:18}},false,true)批量更新没有话 批量插入
过滤查询
1.$in
db.test.find({age:{$in:[20,30]}}).pretty()
{
"_id" : ObjectId("5bf2bd8fc5d9ca79c22070cb"),
"name" : "name20",
"age" : 20,
"date" : 1542634895697
}
{
"_id" : ObjectId("5bf2bd8fc5d9ca79c22070d5"),
"name" : "name30",
"age" : 30,
"date" : 1542634895697
}
- $nin
db.test.find({age:{$nin:[20,30]}}).pretty()
- $or
db.test.find({$or:[{age:20},{name:'liuzhenxing'}]}).pretty()
{
"_id" : ObjectId("5bf2bd8fc5d9ca79c22070c9"),
"name" : "liuzhenxing",
"age" : 18,
"date" : 1542634895697
}
{
"_id" : ObjectId("5bf2bd8fc5d9ca79c22070cb"),
"name" : "name20",
"age" : 20,
"date" : 1542634895697
}
4.$and
db.test.find({$and:[{name:'liuzhenxing'},{age:18}]}).pretty()
{
"_id" : ObjectId("5bf2bd8fc5d9ca79c22070c9"),
"name" : "liuzhenxing",
"age" : 18,
"date" : 1542634895697
}
db.test.find({age:{$not:{$in:[2,30]}}})
{ "_id" : ObjectId("5bf2bd8fc5d9ca79c22070b7"), "name" : "name0", "age" : 0, "date" : 1542634895697 }
{ "_id" : ObjectId("5bf2bd8fc5d9ca79c22070b8"), "name" : "name1", "age" : 1, "date" : 1542634895697 }
{ "_id" : ObjectId("5bf2bd8fc5d9ca79c22070ba"), "name" : "name3", "age" : 3, "date" : 1542634895697 }
{ "_id" : ObjectId("5bf2bd8fc5d9ca79c22070bb"), "name" : "name4", "age" : 4, "date" : 1542634895697 }
5.$all
6.$size $slice
7.$eleMatch 匹配数组不配值