小编Ele*_*ena的帖子

MongoDB $ redact来过滤掉一些数组元素

我正在尝试对样本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)

mongodb mongodb-query aggregation-framework

8
推荐指数
1
解决办法
4188
查看次数