一、特定类型的查询
1.null
注:null不仅会匹配某个键的值为null的文档,还会匹配不包含这个键的文档。如果仅想匹配键值为null的文档,既要检查该键的值是否为null,还要通过"$exists"条件判断键值已存在。
db.getCollection('user').find({"z":{"$in":[null],"$exists":true}})
2.正则表达式
db.getCollection('user').find({"email":/96/})
使用Perl兼容的正则表达式,也可以匹配值为正则表达式自身。
3.数组
$all(与顺序无关)--db.food.find({"fruit": {"$all": ["apple", "banana"]}})
数组特定位置的元素db.food.find({"fruit.0":"apple"})--查找第一个元素是apple的
$size--db.food.find({"fruit":{"$size":3}})
$slice--返回某个键匹配的数组元素的一个子集db.blog.posts.findOne(criteria,{"comments":{"$slice":10}})返回前10条评论,后10条用-10,也可返回集合中间的结果db.blog.posts.findOne(criteria,{"comments":{"$slice":[23,10]}})跳过前23个元素。
"comments.$":1--得到一个匹配的元素
"$elemMatch"--a..同时使用查询条件中的两个语句与一个数组元素进行比较{"x":{"$elemMatch":{"$gt":10, "$lt":20}}},不匹配非数组
b.将限定条件进行分组,仅当需要对一个内嵌文档的多个键操作时才会用到。{"comments":{"$elemMatch":{"author":"joe", "score":{"$gte":5}}}}
二、插入
db.foo.insert({bar:"bax"})
三、更新
db.people.update({"name": "joe"}, joeDocument)
$set--用于指定一个字段的值,如果这个字段不存在,就创建它。db.people.update({"name": "joe"}, {"$set":{"favorite book":"War and Peace"}})
$unset:{"favorite book":1}-可以将这个键完全删除
$inc--增加
$push--向已有的数组末尾加一个元素,要是没有就创建一个新的元素
$addToSet:--可以避免输入重复值
四、删除
db.foo.remove({})