数据查询:
查询需要的键:
db.user.find({},{"username":1,"email":1}
赛选掉不需要的键:
db.user.find({},{"email",0}) #可以把_id 剔除掉。
$exist:查询键是否存在。
如果是一个数组:{a:[{},{},{}]}
可以使用{"a.0.key1":}
.update({查询条件},{$unset:{"key.key.key":1}} 删除内容。
.update({查询条件},{$unset:{"key.0":1}}。#对数组执行操作只会等于赋空值。
.update({},{$rename:{"key1name":"key2name"}})
数组定位:可以通过索引,也可以通过$符号定位。
数组查询:
数组中含有特定键值查询:
“db.food.insert({"fruit" : ["apple", "banana", "peach"]})”
db.food.find({"fruit" : "banana"}) #会查询到上面刚刚插入的集合。
“> db.food.insert({"_id" : 1, "fruit" : ["apple", "banana", "peach"]})
> db.food.insert({"_id" : 2, "fruit" : ["apple", "kumquat", "orange"]})
> db.food.insert({"_id" : 3, "fruit" : ["cherry", "banana", "apple"]})”
数据中同时含有多个值查询:
“要找到既有"apple"又有"banana"的文档,可以使用"$all"来查询:”
“db.food.find({fruit : {"fruit": {$all : ["apple", "banana"]}})”
要是只有一个元素:{"fruit": {$all:["apple"]}} 等价于 {"fruit":"apple"}
对特定长度的数组进行查询:
“db.food.find({"fruit" : {"$size" : 3}})”
数组更新操作符号:
push;$push{"tags","tools"}
pushAll $pushAll{"tags",["tools","tools2"]}
$addtoset必须结合addtoset
$pop{"tags",1}. 删除tags数组的最后一个值
$pop{"tags",-1} 删除数组的第一个元素
$pull{"tags":"lable"} 删除tags数组的label标签
$pullall{"tags",["label1",label2"]}. 删除数组的多个值
使用特定条件删除元素
db.lists.insert({"todo" : ["dishes", "laundry", "dry cleaning"]})
db.lists.update({}, {"$pull" : {"todo" : "laundry"}}) #删除todo数组中含有laundry中的元素。