mongodb 高级应用

来源:互联网 发布:马哥linux怎么样 编辑:程序博客网 时间:2024/06/11 07:48

原文http://hi.baidu.com/bob_love/item/350786a31a2d73dc5bf191eb


1.条件操作符

<, <=, >, >= 这个操作符就不用多解释了,最常用也是最简单的
db.collection.find({ "field" : { $gt: value } } ); // 大于: field > value
db.collection.find({ "field" : { $lt: value } } ); // 小于: field < value
db.collection.find({ "field" : { $gte: value } } ); // 大于等于: field >= value
db.collection.find({ "field" : { $lte: value } } ); // 小于等于: field <= value
如果要同时满足多个条件,可以这样做
db.collection.find({ "field" : { $gt: value1, $lt: value2 } } ); // value1 < field < value

2.$all匹配所有

这个操作符跟SQL语法的in类似,但不同的是, in只需满足( )内的某一个值即可, 而$all必须满足[ ]内的所有值,例如:
db.users.find({age : {$all : [6, 8]}});
可以查询出 {name: 'David', age: 26, age: [ 6, 8, 9 ] }
但查询不出 {name: 'David', age: 26, age: [ 6, 7, 9 ] }

3.$exists判断字段是否存在

查询所有存在age字段的记录
db.users.find({age: {$exists: true}});
查询所有不存在name字段的记录
db.users.find({name: {$exists: false}});
举例如下:
C1表的数据如下:

 
查询存在字段age的数据

可以看出只显示出了有age字段的数据,age_1的数据并没有显示出来。

4.Null值处理

Null值的处理稍微有一点奇怪,具体看下面的样例数据:

 
其中”Lily”的age字段为空,Tom没有age字段,我们想找到age为空的行,具体如下:

 

奇怪的是我们以为只能找到”Lily”,但”Tom”也被找出来了,所以”null”不仅能找到它自身,连不存在age字段的记录也找出来了。那么怎么样才能只找到”Lily”呢?我们用exists来限制一下即可:

 

这样如我们期望一样,只有”Lily”被找出来了。
5.$ne不等于

查询x的值不等于3的数据
db.things.find( { x : { $ne : 3 } } );
举例如下:
C1表的数据如下:

 
查询age的值不等于7的数据 

 

可以看出只显示出了age等于7的数据,其它不符合规则的数据并没有显示出来。

6.$in包含

 

查询age的值在7,8范围内的数据:

 

7.$nin不包含

 

8.$size数组元素个数 

9.正则表达式匹配

 
10.count查询记录条数

 

11.skip限制返回记录的起点

 
12.sort

 
13.游标

象大多数数据库产品一样,MongoDB也是用游标来循环处理每一条结果数据,具体语法如下:

 
0 0
原创粉丝点击