我正在尝试对样本bios集合http://docs.mongodb.org/manual/reference/bios-example-collection/进行查询:
在获得图灵奖之前,检索他们收到的所有人及其奖励.
我想出了这个问题:
db.bios.aggregate([
{$match: {"awards.award" : "Turing Award"}},
{$project: {"award1": "$awards", "award2": "$awards", "first_name": "$name.first", "last_name": "$name.last"}},
{$unwind: "$award1"},
{$match: {"award1.award" : "Turing Award"}},
{$unwind: "$award2"},
{$redact: {
$cond: {
if: { $eq: [ { $gt: [ "$award1.year", "$award2.year"] }, true]},
then: "$$KEEP",
else: "$$PRUNE"
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
这就是答案:
/* 0 */
{
"result" : [
{
"_id" : 1,
"award1" : {
"award" : "Turing Award",
"year" : 1977,
"by" : "ACM"
},
"award2" : …Run Code Online (Sandbox Code Playgroud)