Mongodb:如何只返回带有聚合框架的嵌入式文档

时间:2014-01-17 15:06:06

标签: mongodb mongoose aggregation-framework

这是提供和出价是子文档的文档结构。我使用mongoosejs作为ORM。

var user = {
    name : 'polk',
    offers: [{
        title: '1',
        tags: ['a', 'b', 'c'],
        bids: [{
            _id: 1      
            name: 'jose', 
            age: 18
        }, {
            _id: 2
            name: 'carlos', 
            age: 19
        }]
    },{
        title: '2',
        tags: ['d', 'e', 'f'],
        bids: [{
            _id: 3
            name: 'gomes', 
            age: 21
        }, {
            _id: 4
            name: 'fernando', 
            age: 31
        }]
    }]
};

我需要什么?这个子文件:

{
    _id: 4
    name: 'fernando', 
    age: 31
}

使用?聚合框架。

1 个答案:

答案 0 :(得分:1)

您可以使用Aggregation Framework执行以下操作:

db.collection.aggregate(
    {$unwind : "$offers"},
    {$unwind : "$offers.bids"},
    {$match : {"offers.bids._id" : 4}},
    {$project : {_id : "$offers.bids._id", 
                 name : "$offers.bids.name", 
                 age : "$offers.name.age"
    }}
)