mongdb查询操作
Posted 成长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongdb查询操作相关的知识,希望对你有一定的参考价值。
1、db.table.find() 查询所有信息 db.table.findOne()查询第一个信息
2、db.table.find({条件},{要显示列}) db.table.find({},{_id:0,name:0})查询不现实_id和name其他的都显示出来
3、查询条件{age:{$gte:22,$lte:30}} ==>age>=22 and age<=30
$lt(<)、$lte(<=)、$gt(>)、$gte(>=)、$ne(!=) ----db.table.find({age:{$gte:20,$lte:30}},{_id:0})
$in和$nin 只能作用于数组范围 db.table.find({name:{$in:[‘123‘,‘456‘]}},{_id:0});
$or操作用$or:[{where},{where:{}}] db.table.find({$or:[{age:{$gte:20}},{id:{$gte:100}}]},{_id:0})
$not 取返操作,可以作用任何表达式中,db.table.find({name:{$not:/li/}},{_id:0});
还可以正则处理查询 db.table.find({name:/mongodb/},{_id:0})
$all 数组查询必须全部包含db.table.find({array:{$all:[‘mongodb‘,‘js‘,‘java‘]}},{_id:0}) array中必须全部包含mongod js java才会出来
根据数组下标查询db.table.find({‘array.1‘:‘mongodb‘},{_id:0}) 查询出array数组中第一个元素是mongodb的集合
$size根据数组的长度查询db.table.find({array:{$size:3}},{_id:0}) 不能和其他比较符操作 比如 > 或者<操作
但是可以在文件中添加一个key:记录数组的大小.以后数组每次添加一个元素或者减少一个元素让这个添加的key加1和减1
$slice 数组范围查询,只显示数组中的几个数组db.table.find({name:‘h‘},{array:{$slice:[1,3]},_id:0}) 只显示array中下标是1-3的数据
显示数组最后的一个元素{$slice:-1}db.table.find({name:‘h‘},{array:{$slice:-1},_id:0})
当数组中有多个对象的查询array:[{name:2},{name:1}] 可以使用对象.的方式db.table.find({‘array.name‘:‘1‘},{_id:0})
$elemMatch数组的查询一般使用这个查询,db.table.find({array:{$elemMatch:{obj:‘1‘,s:‘A‘}}})
4、$where 复杂的查询条件,性能不太高.查询器可以根函数db.table.find({"$where":function(){}})
5、limit() 查询文件中前几条数据db.table.find({},{_id:0}).limit(2)
6、skip() 跨跃几条也就是从几条数据开始查询db.table.find({},{_id:0}).limit(2).skip(5) 从第5条开始查,查询2条 和limit可以实现分页
7、sort()排序1正序-1倒序 db.table.find({},{_id:0}).sort({age:-1}) mongodb中的文档key是不规则的
mongodb的key可以存储不同类型数据,排序也会有优先级
最小值 > null > 数字 > 字符串 > 对象/文档 >数组 > 数组 >二进制>对象ID>boolean>日期>时间戳>正则>最大值
8、skip()分页性能问题可以在文档上添加一个日期,db.table.find({date:{$ge:日期值}},{_id:0}).limit(10)
9、游标遍历数据
游标销毁条件1、默认超过10分钟没用销毁2、游标迭代完成3、客户端发来信息销毁
var data=db.table.find();
while(data.hasNext()){
var o = data.next();
print(o);
}
10、查询快照db.table.find({$query:{name:‘11‘},$snapshot:true})
11、高级查询
$query、
$orderby、
$maxscn、最多扫描的文档数
$min、查询开始
$max、查询结束
$hint、使用那个索引
$explain:boolean 统计
$snapshot:boolean 一致快照
以上是关于mongdb查询操作的主要内容,如果未能解决你的问题,请参考以下文章