嵌套的mongo查询

时间:2016-05-13 20:10:39

标签: mongodb

以下是数据的样子:

{
    "_id" : {
            "item" : "1",
            "state" : "something"
    },
    "things" : {
            "ordered" : 2,
            "cost" : 123
    }
}

我尝试查询项目1的所有文档,该项目有很多状态。我知道我可以使用db.orders.find({_id:{item:"1", state: "something"}})获得该记录。但我希望得到所有州,我尝试db.orders.find({_id:{item:"1", state: {$exists: true}}})

但这似乎不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您想获得可以使用的所有不同状态的列表。

db.orders.distinct("_id.state");

如果您想获取集合中所有州的列表

db.orders.find({}, {"_id.state": 1});
  

我真的想要获得给定的所有状态的things.cost   项目

db.orders.aggregate([
    { $group : { 
           _id : { item : "$_id.item" , state : "$_id.state"}, 
            cost: { $push :  "$things.cost"  }
           }
    }
]);

如果您希望使用$sum而不是$push

来求和而不是组的元素
  

我如何获得某些项目?

db.orders.aggregate([
    { $match : { "_id.item" : "YOUR_ID" }},
    { $group : { 
           _id : { item : "$_id.item" , state : "$_id.state"}, 
            cost: { $push :  "$things.cost"  }
           }
    }
]);