在mongodb中查找(搜索前30条记录)



如何在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

最新更新