这是提供和出价是子文档的文档结构。我使用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
}
使用?聚合框架。
答案 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"
}}
)