2020-03-16 记录mongdb(5)
2020-03-26 本文已影响0人
大风车呀大风车
游标:
查询操作返回的结果游标,游标的迭代和操作
投射:
只返回部分字段,内嵌文档的投射,数组的投射
开始读取文档 db.collection.find()
语法:db.<collection>.find(<query>,<projection>)
![](https://img.haomeiwen.com/i19744456/8c2bc100d3892085.png)
![](https://img.haomeiwen.com/i19744456/b1b3d3e5ad2d2bd6.png)
清楚的显示文档 db.collection.find().pretty()
筛选文档
匹配查询 db.collection.find({name:'abc'}) //可以写多个文档
比较操作符
{<filed>:{$<operator>:<value>}} //文档字段 操作符 操作对于查询值
操作符如下:
![](https://img.haomeiwen.com/i19744456/6d327d80d2dfc814.png)
例如写法: db.account.find({name:{$eq:'alice'}})
语法格式:{<filed>:{$in:[<value1>,<value2>...<valueN>]}}}
![](https://img.haomeiwen.com/i19744456/fff67e88842ce408.png)
例如写法:db.account.find({name:{$in:['alice','tom']}})
逻辑操作符
![](https://img.haomeiwen.com/i19744456/5cfc06989e8a1b54.png)
{flied:{$not:{<operator-expression>}}} //文档字段 不成立的表达式
例如写法 : db.account.find({balance:{$not:{$lt:500}}})
{$and:[{<expression1>},{<expression2>},.....,{<expressionN>}]}//文档字段 同时成立的表达式
例如写法:
![](https://img.haomeiwen.com/i19744456/aea66c513d1d8d44.png)
简写方式:
![](https://img.haomeiwen.com/i19744456/8ee2b3dacee38c9b.png)
语法格式:{$or:[{<expression1>},{<expression2>},.....,{<expressionN>}]}
语法格式:{$nor:[{<expression1>},{<expression2>},.....,{<expressionN>}]}
字段操作符
![](https://img.haomeiwen.com/i19744456/06d3b77bd40bc38d.png)
语法格式:{<filed>:{$exists:<boolean>}} //文档字段 包含、不包含
语法格式:{<filed>:{$type:<BSON type>}} {<filed>:{$type:[<BSON type1>,<BSON type2>]}}
例如写法:db.account.fint({_id:{$type:'string'}})
数组操作符
![](https://img.haomeiwen.com/i19744456/7e2d371c8a79c4d2.png)
语法格式:{<filed>:{$all:[<value1>,<value2>]}}
语法格式:{<filed>:{$elemMatch:[<query1>,<query2>]}}
运算操作符
![](https://img.haomeiwen.com/i19744456/b9833d932cb839dc.png)
语法格式:
![](https://img.haomeiwen.com/i19744456/b36b98e308750c76.png)
文档游标:
db.collection.find() 返回一个文档集合游标。在不迭代的游标的情况下,只列出前20个文档。
可以直接使用游标下标直接访问文档集合中的某一个文档。游历完游标中的所有文档之后,或者在10分钟之后,游标会自动关闭。
noCursorTimeout() 函数保持游标一直有效。db.collection.find().noCursorTimeout()
在不遍历游标的情况下,需要主动关闭游标(关闭游标close())。
游标函数:
![](https://img.haomeiwen.com/i19744456/c5e5d6fda95415b1.png)
hasNext() 游标指向的文档集合中,如果还有没有游历过的剩余文档,hasNext()会返回true,反之返回false;
next()要求游标指向下一个文档集合中的文档;
foreach() 更加方便的遍历游标所指向的文档;
limit(<number>) 返回要求数量的文档
skip(<offset>) 会跳过指定数量的文档
count(<applySkipLimit>) 从元数组中得到计数的结果
![](https://img.haomeiwen.com/i19744456/9235447347b6c84a.png)
sort(<document>) 排序 1表示从小到大正向、-1表示逆向
组合写法的顺序:sort、skip、limit
![](https://img.haomeiwen.com/i19744456/a95392fd3fff6806.png)
![](https://img.haomeiwen.com/i19744456/51e889a32536292e.png)