簡體   English   中英

如何在對象數組mongo中查找和過濾?

[英]How to lookup and filter in array of objects mongo?

我對mongodb中的對象查找和過濾器數組有疑問

我有以下結構:人

{
    "_id": "5cc3366c22c3767a2b114c6b",
    "flags": [
        "5cc30210fada5d7820d03aaf",
        "5cc2c3924a94a575adbdc56a"
    ],
    "key": "Animal",
    "name": "name1",
    "description": "description1",
    "endpoints": [
        {
            "isEnabled": true,
            "publishUrl": "megaUrl",
            "env": "5cc1a8911b19026fd193506b"
        },
        {
            "isEnabled": true,
            "publishUrl": "megaUrl",
            "env": "5ccaeef3312acb103730d4c5"
        }
    ]
}

envs集合

{
    "_id" : "5cc1a8911b19026fd193506b",
    "name" : "name2",
    "key" : "PROD",
    "publishUrl" : "url1",
    "__v" : 0
}

{
    "_id" : "5ccaeef3312acb103730d4c5",
    "name" : "name2",
    "key" : "PROD",
    "publishUrl" : "url1",
    "__v" : 0
}

我應該按endpoints。$。env篩選文檔,所以,我有: accessKeys = ["PROD", "UAY"] ,我應該看到result。 具有env.key === "PROD" || env.key === "UAT"端點 env.key === "PROD" || env.key === "UAT"

預期結果:

{
    "_id": "5cc3366c22c3767a2b114c6b",
    "flags": [
        "5cc30210fada5d7820d03aaf",
        "5cc2c3924a94a575adbdc56a"
    ],
    "key": "Animal",
    "name": "name1",
    "description": "description1",
    "endpoints": [
        {
            "isEnabled": true,
            "publishUrl": "megaUrl",
            "env": {
                "_id" : "5cc1a8911b19026fd193506b",
                "name" : "name2",
                "key" : "PROD",
                "publishUrl" : "url1",
                "__v" : 0
            }
        },
    ]
}

請幫助我,我該怎么做? 我知道聚合,但不能做到這一點:(

嘗試這個 :

db.persons.aggregate([{
    $unwind : "$endpoints"
},{
    $lookup :{
        from  : "envs",
        localField : "endpoints.env",
        foreignField : "_id",
        as : "endpoints.env"
    }
},{
    $unwind : "$endpoints.env"
},{
    $match : {
        "endpoints.env.key" : {$in : accessKeys}
    }
},{
    $group : {
        _id : "$_id",
        flags : {$first : "$flags"},
        key : {$first : "$key"},
        name : {$first : "$name"},
        description : {$first : "$description"},
        endpoints : {$push : "$endpoints"},
    }
}])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM