Соответствие ObjectId внутри конвейера поиска не работает как обычно - PullRequest
0 голосов
/ 11 октября 2019

Проблемная часть { $match: { contentId: "$$content_id" }} внутри конвейера. Возвращает пустой массив. но когда я меняю его, как показано ниже, он работает нормально. Это сценический объект моего конвейера агрегации. В чем проблема с первым? Простое сопоставление не работает в конвейере поиска, когда переменная let является objectId? Спасибо за уделенное время.

const contentReactionLookUp = (user_id) =>  { 
    return {
        $lookup: {
            from: "contentreactions",
            let: { content_id: "$_id" },
            pipeline: [
                { $match:
                     { $expr:


                                     { $eq: [ "$contentId", "$$content_id" ] },


                     }
                },
                //{ $match: { contentId: "$$content_id" }}, it doenst' work! 
            ],
            as: "userReaction"
        },
    }
}

1 Ответ

0 голосов
/ 13 октября 2019

https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions Я нашел свое решение здесь. Простое совпадение агрегации монго не работает, если его переданное значение является путем к полю.

...