我在mongodb中有一个集合,该集合有一个字段displayInCategories。该集合包含1000个不同displayInCategories的数据。 对于所有可用的displayInCategories,是否可以将记录限制为< = 5。 我不想限制整个结果的记录,我需要根据displayInCategories限制记录
答案 0 :(得分:0)
这可能会让你:
db.collection.aggregate([{
$group: {
_id: "$displayInCategories", // group by displayInCategories
"docs": { $push: "$$ROOT" } // remember all documents for this category
}
}, {
$project: {
"docs": { $slice: [ "$docs", 5 ] } // limit the items in each "docs" array to 5
}
}])
您可能希望在开始时应用$sort
阶段,以确保您不会获得随机文档,而是根据某些条件获得“前5名”。