我正在使用mongodb查询。集合中的每个文档都如下所示:
{
"_id": "12345",
"name": "Trinity Force",
"price": 3702,
"comp": [
"Zeal",
"Phage",
"Sheen",
]
}
我正在处理一个返回5个最便宜的项目(最低价格)的查询,价格等于0(不过那些小饰品)。我写了这个(抱歉格式不佳)
db.league.aggregate( { $project : { _id : 1, name: 1, price: 1, comp: 0 } },
{ $match : {price : { $gt : 0 } } },
{ $sort: { price : 1 } }).limit(5)
但是,我遇到了两个问题;限制函数似乎不适用于此聚合,$ project也不适用。我要查找的输出应该排除项目组件(因此comp:0)并将其限制为5个输出。我能得到一些帮助吗?
答案 0 :(得分:3)
db.league.aggregate(
{ $project : { _id : "$_id", name: "$name", price: "$price"} },
{ $match : { "price" : { $gt : 0 } } },
{ $sort: { "price" : 1 } },
{ $limit : 5 })
这是用于返回5个最便宜的项目的聚合查询
答案 1 :(得分:0)
imo,这不是聚合,而是排序结果。
db.league.find({ price: { $gt :0} }, {comp: 0}).sort({price: 1}).limit(5)
不过,我会测试两者的性能