游标:
查询操作返回的结果游标,游标的迭代和操作
投射:
只返回部分字段,内嵌文档的投射,数组的投射
开始读取文档 db.collection.find()
语法:db.<collection>.find(<query>,<projection>)
图一 图二
清楚的显示文档 db.collection.find().pretty()
筛选文档
匹配查询 db.collection.find({name:'abc'}) //可以写多个文档
比较操作符
{<filed>:{$<operator>:<value>}} //文档字段 操作符 操作对于查询值
操作符如下:
图三例如写法: db.account.find({name:{$eq:'alice'}})
语法格式:{<filed>:{$in:[<value1>,<value2>...<valueN>]}}}
图四
例如写法:db.account.find({name:{$in:['alice','tom']}})
逻辑操作符
图五{flied:{$not:{<operator-expression>}}} //文档字段 不成立的表达式
例如写法 : db.account.find({balance:{$not:{$lt:500}}})
{$and:[{<expression1>},{<expression2>},.....,{<expressionN>}]}//文档字段 同时成立的表达式
例如写法:
图六简写方式:
图七
语法格式:{$or:[{<expression1>},{<expression2>},.....,{<expressionN>}]}
语法格式:{$nor:[{<expression1>},{<expression2>},.....,{<expressionN>}]}
字段操作符
图八语法格式:{<filed>:{$exists:<boolean>}} //文档字段 包含、不包含
语法格式:{<filed>:{$type:<BSON type>}} {<filed>:{$type:[<BSON type1>,<BSON type2>]}}
例如写法:db.account.fint({_id:{$type:'string'}})
数组操作符
图九
语法格式:{<filed>:{$all:[<value1>,<value2>]}}
语法格式:{<filed>:{$elemMatch:[<query1>,<query2>]}}
运算操作符
图十语法格式:
图十一文档游标:
db.collection.find() 返回一个文档集合游标。在不迭代的游标的情况下,只列出前20个文档。
可以直接使用游标下标直接访问文档集合中的某一个文档。游历完游标中的所有文档之后,或者在10分钟之后,游标会自动关闭。
noCursorTimeout() 函数保持游标一直有效。db.collection.find().noCursorTimeout()
在不遍历游标的情况下,需要主动关闭游标(关闭游标close())。
游标函数:
图十二hasNext() 游标指向的文档集合中,如果还有没有游历过的剩余文档,hasNext()会返回true,反之返回false;
next()要求游标指向下一个文档集合中的文档;
foreach() 更加方便的遍历游标所指向的文档;
limit(<number>) 返回要求数量的文档
skip(<offset>) 会跳过指定数量的文档
count(<applySkipLimit>) 从元数组中得到计数的结果
图十三sort(<document>) 排序 1表示从小到大正向、-1表示逆向
组合写法的顺序:sort、skip、limit
图十四 图十五
网友评论