此章节数据见上一节。
1、按条件查询
1)根据条件进行查询
db.集合名.find({查询条件});
实例1:查询所有男性歌手
db.singer.find({"sex":"nan"});
相当于SQL语句: select * from singer where sex="nan";
实例2:查询名字叫lisi的歌手
db.singer.find({"name":"lisi"});
2)$gt 大于
db.集合名.find({"键名" : {$gt:30} }); --- 查询大于30
实例3:查询命令大于30的歌手
db.singer.find({"age" : {$gt:30} });
相当于SQL语句: select * from where age > 30;
3) $lt 小于
db.集合名.find({"键名" : {$lt:20} }); --- 查询小于20
相当于SQL语句: select * from where age<20;
4)$gte 大于等于
db.集合名.find({"键名" : {$gte:30} }); -- 查询大于等于30
5)$gte 小于等于
db.集合名.find({"键名" : {$lte:20} }); --- 查询小于等于20
6)选择区间
db.集合名.find({"key" : {$gt:20, $lt:60 } }); --- 查询20到60之间的数据
相当于SQL语句: select * from where age>20 and age<60;
7)不等于
db.集合名.find({"key" : {$ne:44 } }); --- 查询不等于44的数据
相当于SQL语句: select * from where age != 44;
8)取模运算
db.集合名.find({"key" : {$mod:[10,4] } }); --- 取模运算,条件相当于key%10 == 4, 即key除以10余数为4的数据
9)in属于
db.集合名.find({"key" : {$in:[13,44] } }); -- 条件相当于key等于[13,44]中任何一个
10)nin属于
db.集合名.find({"key" : {$nin:[13,44] } }); -- 条件相当于key除了[13,44]中 任何一个
11)size数量、尺寸
db.集合名.find({"key" : {$size:1 } }); -- 条件相当于key对应的值的数量是1(值必须是数据)
这个有点难理解,通过例子理解容易些:
比如一个歌手代表作是一个数组,找出代表作有3个的歌手
先插入一条数据,然后查询:
db.singer.insert({
"num":"6",
"name":"yukai",
"age":23,
"sex":"nan",
"job":"singer",
"sing":["where you", "love", "go go go"]
});
12) $exist 是否存在某个键名
db.集合名.find({"key" : {$exists:true|false } }); -- true返回存在字段key的数据,false返回不存在字段的数据
查询有sing字段的数据:
13) $or 符合多个条件中任意一个
db.集合名.find({{$or:[{a:1}, {b:2}] } }); -- 查询符合条件a=1的或者符合条件b=2的数据
$or 表示或的意思。(注意:Mongodb 1.5.3后版本可用)
如打印名字叫zhangsan和所有女歌手的名字:
db.集合名.find({"key.subkey" : value }); --内嵌对象中的值匹配。注意:"key.subkey" 必须加引号
插入一条数据,用于查询:
db.singer.insert({
"num":"7",
"name":"tayun",
"age":22,
"sex":"nv",
"job":"singer",
"sing":[{"yaogun":["where you", "love", "go go go"]}, {"liuxing":["china heart", "who are you"]}]
});
14)模糊查询
db.集合名.find({"key" : value }); --注意value必须是正则表达式
查询所有姓zhang的歌手:
db.集合名.find({"key" : /zhang/ }); --//是JS的语法