ize: 用于某个数组类型的key对应值的数量满足要求。
用法示例:筛选出来包含数组元素个数为3的文档。
db.op_test.find({"values":{$size : 3}})
评论(Comments)相关操作
$comment: 在查询、更新或其他操作执行过程中,可以通过添加$comment操作符添加评论。改评论会被记录在日志中,用于后续分析。
用法示例
db.collection.find( { , $comment: } )
地理位置(Geospatial)相关操作
$geoWithin: 这个操作符基于2d 空间索引,首先要针对文档的某个字段建立一个2d的空间索引,然后利用此操作符,可以在一个2d空间范围内指定一个多变形,$geoWithin操作符就是查询出包含在多变形范围内的点。
详见:http://docs.mongodb.org/manual/reference/operator/query/geoWithin/#op._S_geoWithin
$geoIntersects: 同样基于2d空间索引,计算当前的空间范围和指定的geo多变形取交集。
详见:http://docs.mongodb.org/manual/reference/operator/query/geoIntersects/#op._S_geoIntersects
$near :基于2d空间索引,指定一个点,返回该点有近及远的所有的点。
详见:http://docs.mongodb.org/manual/reference/operator/query/near/#op._S_near
$nearSphere: 基于2d空间索引,指定一个点,由近及远的返回所有的点,和$near操作符不同的是计算距离的方式 $nearSphere计算的是球面距离。$near计算的是坐标距离。
投影相关操作
$ : 对你们看错,就只是一个$操作符,如果文档中某个value是数组类型,通过 $ 操作符可以指定数组字段的投影,返回数组字段中第一个匹配的那个元素,相当于截断了原来的整个数组,只返回第一个值。
用法示例:(会返回values数组中,第一个和"a"相等的元素,也就是返回"a")
db.op_test.find({"values":{$eq:"a"}},{"values.$":1})
返回结果如下:
{ "_id" : ObjectId("551117417cbfa0a55db5c5b9"), "values" : [ "a" ] }
$elemMatch : 这个操作符上面数组操作有涉及,其另外一个效果就是,在嵌套文档的应用中,返回数组中第一个符合条件的文档,可以限定多种组合条件。
详见:http://docs.mongodb.org/manual/reference/operator/projection/elemMatch/#proj._S_elemMatch
$meta : 和全文索引 text index 组合使用,针对一个带有全文索引的元素,指定改操作符,可以返回和查询条件相似的分数,分数越高,匹配度越高。
用法示例:
db.op_test.find({"$text":{$search:"steven",$language:"en"}},{score:{$meta:"textScore"}})
执行结果:
{ "_id" : ObjectId("550fdba3c118f1b20bd51a9f"), "name" : "steven", "age" : 20, "score" : 1.1 }
$slice : 数组类型字段的投影操作,返回原来数据的一个子集.针对一个数组,其有如下几种返回子集的方式:
用法示例: 返回博客的前10条评论
db.blog.find({"comments":{"$slice":10}})
用法示例: 返回博客的后10条评论
db.blog.find({"comments":{"$slice":10}})
用法示例: 返回博客跳过前10条,然后返回第11 ~ 15条
db.blog.find({"comments":{"$slice":[10,5]}})