mongodb(4查询)
第一个参数决定要返回那些文档
db.test.find()返回所有文档
db.test.find({"age":27})
db.test.find({"username":"joe"})
db.test.find({"username":"joe","age":27})and的关系
第二参数指定想返回的键
db.test.find({},{"username":1,"email":1}) 只会有username和emial和id
db.test.find({},{"_id":0,"username":1}) id被剔除
查询条件
“$lt”、"$lte"、"$gt"、"$gte" < <= > >=
db.test.find({"age":{"$gte":18,"$lte":30}}) 查询年龄在18-30的
“$ne" 不等于
db.test.find({"username":{"$ne":"joe"}})
OR查询两种方式:$in :查询一个键的多个值 $or:在多个键中查询任意的给定值
db.raffle.find({"ticket_no":{"$in":[725,542,390]}}) 查出所有中奖号码(725,542,390) 的全部号码
db.users.find({"user_id":{"$in":[12345,"joe"]})
{ticket_no:{$in:[725]}}和{ticke_no:725}的效果一样的
$nin与in相反
$or 可以包含多个条件
db.raffle.find({"$or":[{"ticket_no":725},{"winner":true}]})
db.raffle,find({"$or":[{"ticket_no":{"$in":[725,542,390]}},{"winner":true}]})
$not 是元条件句,可以在任何其他条件之上 例:
db.users.find({"id_num":{"$mod":[5,1]}}) 取5的余数是1的,1.6.11.16
db.users.find({"id_num":{"$not":{"$mod":[5,1]}}}) 取没有匹配到的
条件语句是内层文档的键,而修改器则是外层文档的键
查询null语句
db.c.find({"z":{"$in":[null],"$exists":true}})
mongdb支持js的所有正则表达式
db.users.find({"name":/joe/i})
4.33查询数组
1、$all 既要有"apple"又有“banana”的文档
db.food.find({fruit:{$all:["apple"],"banana"}})
2、$size 指定长度的数组
3、$slice 是find的第二个参数,指定需要返回的键,返回前10.返回后10返回10-20之间
db.blog.posts.findOne(criteria,{"comments":{"$slice":10}})
db.blog.posts.findOne(criteria,{"comments":{"$slice":-10}})
db.blog.posts.findOne(criteria,{"comments":{"$slice":[10-20 ]}})
db.blog.posts.findOne(criteria,{"comments":{"$slice":-1}})返回最后一条评论
4、返回一个匹配的数组元素
如果知道元素的小标用$ db.blog.posts.find({"coments.name":"bob"},{"comments.$":1})
5、数组和范围查询的相互作用
6.$where 可以使用任意的javascript
7.服务器端使用javascript脚本使用作用域
8.游标
9.limit 限制返回数量
db.collection.find().limit(3)
10。skip和limit除去前三条剩下
11.sort 顺序
sort()接受一个参数,值代表排序的方向,-1降序1升序
例如:一个分页搜索
db.stock.find({"desc":"mp3"}).limit(50).sort({"price":-1})
显示更多页
db.stock.find({"desc":"mp3"}).limit(50).skip(50).sort({"price":-1})
12比较顺序
最小值 null 数字 字符串 对象/文档 数组 二进制数据 对象id 布尔型 日期型 时间戳 正则表达式 最大值
13 高级查询选项
$maxscan $min $max $ showDiskLoc
14 获取一直结果