如何在30个mongo文件内预约?
<标题>例:db.find (). count () = 100 documents //my base
<标题>,我希望db.find ({$ {and 'user.gender': 'Male'}, {'in first 30 records "}) = 5 documents
不是
db.find ({'user.gender': 'Male'}). limit (30) = 30 documents //I do not want it
标题>标题>
您可以在mongodb
中使用$aggregate
db.collName.aggregate([
{ $limit: 30 },
{ $match: { 'user.gender': 'Male'} }
])
如果你想在任何字段的基础上对集合进行排序,你可以使用aggregation pipeline
中的$sort
。
还请记住事实,"只要您不显式排序,就不能保证您的文档以任何特定顺序由查询返回。"新集合中的文档通常按插入顺序返回,但各种事情可能导致该顺序意外更改,因此不要依赖它。
按_id
字段排序时,条目按创建日期返回。所以你也可以先用sort
代替_id
,然后再限制你的文档。
例如:
db.collName.aggregate([
{ $sort: { _id: 1 } },
{ $limit: 30 },
{ $match: { 'user.gender': 'Male'} }
])
解释:
它将首先根据文档中的_id
字段sort
您的文档,然后limit
您的文档到30,然后根据查询在返回的文档中找到match
。