0
{
    "_id" : ObjectId("5dbdacc28cffef0b94580dbd"),
    "owner" : {
        "image" : "https://lh3.googleusercontent.com/a-/AAuE7mCpG2jzbEdffPgdeVWnkBKwyzCCwEB1HMbU1LAVAg=s50",
        "fullname" : "soeng kanel",
        "userID" : "5da85558886aee13e4e7f044"
    },
    "image" : "soeng kanel-1572711618984.png",
    "body" : "sdadadasdsadadas sds",
    "date" : ISODate("2019-11-02T16:20:05.558Z"),
    "comments" : [ 
        {
            "user" : "5da85558886aee13e4e7f044",
            "fullname" : "soeng kanel",
            "username" : "",
            "comment" : "sdsfdsfdsfds",
            "_id" : ObjectId("5dbdacc78cffef0b94580dbf"),
            "replies" : [ 
                {
                    "likes" : [ 
                        "5da85558886aee13e4e7f044"
                    ],
                    "date" : ISODate("2019-11-02T16:20:05.558Z"),
                    "_id" : ObjectId("5dbdacd78cffef0b94580dc0"),
                    "reply" : "r1111111",
                    "username" : "",
                    "fullname" : "soeng kanel",
                    "user" : "5da85558886aee13e4e7f044"
                }, 
                {
                    "likes" : [],
                    "date" : ISODate("2019-11-02T16:20:05.558Z"),
                    "_id" : ObjectId("5dbdacdb8cffef0b94580dc1"),
                    "reply" : "r222222",
                    "username" : "",
                    "fullname" : "soeng kanel",
                    "user" : "5da85558886aee13e4e7f044"
                }, 
                {
                    "likes" : [],
                    "date" : ISODate("2019-11-03T03:04:23.528Z"),
                    "_id" : ObjectId("5dbe4749fa751f05afcc1bd6"),
                    "reply" : "33333333",
                    "username" : "",
                    "fullname" : "soeng kanel",
                    "user" : "5da85558886aee13e4e7f044"
                }
            ],
            "date" : ISODate("2019-11-02T16:20:05.558Z"),
            "likes" : []
        }
    ],
    "likes" : [ 
        "5da85558886aee13e4e7f044"
    ],
    "project" : {},
    "__v" : 2
}

私のクエリは

db.getCollection("posts").aggregate([
    { $match: {_id: ObjectId("5dbdacc28cffef0b94580dbd"), "comments._id": ObjectId("5dbdacc78cffef0b94580dbf") }},
    { $unwind: "$comments"},
    { $match: { "comments._id": ObjectId("5dbdacc78cffef0b94580dbf")}},

    { $project: {"replies": "$comments.replies", _id: 0}},

    { $match: { "replies._id": ObjectId("5dbdacd78cffef0b94580dc0")}},

    { $project: {"likes": "$replies.likes", _id: 0}},
    ])

このクエリでは、3 つの要素を取得します。

{
    "likes" : [ 
        [ 
            "5da85558886aee13e4e7f044"
        ], 
        [], 
        []
    ]
}

それは私が望むものではありません。私が望むのは、 repliesこの_id5dbdacd78cffef0b94580dc0 によって具体的に取得することです。

そして私の期待

{
        "likes" : [ 
            [ 
                "5da85558886aee13e4e7f044"
            ]
        ]
    }
4

1 に答える 1