排除mongo聚合中的数据

时间:2014-11-28 23:24:04

标签: mongodb

我正在使用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个输出。我能得到一些帮助吗?

2 个答案:

答案 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)
不过,我会测试两者的性能