mongodb条件查询

"$lt"-----------------------"<"
"$lte"----------------------"<="
"$gt"-----------------------">"
"$gte"----------------------">="
"$ne"-----------------------"!="


示例:{"x":{"$gt":10,"$lte":30}}

从某集合B中查找日期属性day值大于2012/01/01的文档数据,写法如下:
{"day":{"$gt":new Date("2012/01/01")}}

$in:查询匹配指定条件值的文档;
$nin:查询不匹配指定条件值的文档;

示例:{"x":{"$in":['值1','值2',.....]}}
示例:{"x":{"$nin":['值1','值2',.....]}}

$or:查询匹配多个条件多个值的文档;

示例:{"$or":[{"x":{"$in":['值1','值2'...]}},{"y":"3"}]}

$all匹配所有
示例:{"age":{"$all":[2,3]}})
结果:{"name":jack,"age":[1,2,3]}

$exists 判断文档属性是否存在
示例:{"name":{"$exists":true}}   --查找属性name存在的文档
     {"name":{"$exists":false}}  --查找属性name不存在的文档

$not元条件句

可与其他条件配合使用,即不在匹配范围之内的文档

$mod取模运算
{"age":{"$mod":[5,1]}} --表示查找年龄/5余1的所有文档

{"age":{"$not":{"$mod":[5,1]}}} --查找年龄/5余1之外的所有文档

$size 保留一个数组中的长度
{ "_id" : ObjectId("501e71557d4bd700257d8a41"), "a" : "1", "b" : [ 1, 2, 3 ] }
> db.C.find({"b":{"$size":2}})
{ "_id" : ObjectId("501e71607d4bd700257d8a42"), "a" : "1", "b" : [ 1, 2 ] }

$slice
返回数组的一个子集,即对以某属性为基础,返回多少条(范围)。也可以接受偏移值和要返回的元素数量,来返回中间的结果。
> db.C.find()
{ "_id" : ObjectId("501e71557d4bd700257d8a41"), "a" : "1", "b" : [ 1, 2, 3 ] }
{ "_id" : ObjectId("501e71607d4bd700257d8a42"), "a" : "1", "b" : [ 1, 2 ] }
> db.C.findOne({},{"b":{"$slice":[2,3]}})
{ "_id" : ObjectId("501e71557d4bd700257d8a41"), "a" : "1", "b" : [ 3 ] }
> db.C.findOne({},{"b":{"$slice":-2}})
{
        "_id" : ObjectId("501e71557d4bd700257d8a41"),
        "a" : "1",
        "b" : [
                2,
                3
        ]
}

db.test.find({name:/^joe/i})   ^匹配以joe开头的,而且不区分大小写
{ name : /陈.*/i }
$where

即可执行任务javascript作为查询的一部分。
$where的值可以是function、也可以是字符串等等。

db.C.find({"$where":function(){return this.a == "1"}})与db.C.find({"$where":"this.a == '1'"}})

db.C.find().limit(10)  --限制查询的结果条数为10条
db.C.find().skip(10)   --忽略匹配的前10条,显示从第11条匹配的文档开始所有的文档
db.C.find().sort({"a":-1})  --sort以键/值,表示按某个属性进行排序,1:升序,-1:降序


spirng-data-mongodb模糊查询
(new Query(new Criteria(      "name").regex(".*?"+"张"+".*")).limit(9), User.class); 

高级查询选项:
$maxscan:integer  --指定查询最多扫描的文档数量
$min:document     --查询的开始条件
$max:document     --查询的结束条件
$hint:document    --指定服务器使用哪个索引进行查询
$explain:boolean  --获取查询执行的细节(用到的索引、结果数量、耗时等),而并非真正执行查询
$snapshot:boolean --确保查询的结果是在查询执行那一刻的一致快照

猜你喜欢

转载自shibin-1109.iteye.com/blog/1965274