Я новичок в mongodb, поэтому я надеюсь, что это не выглядит как очень элементарный вопрос. Я провел некоторое исследование и попытался применить то, что нашел, но что-то, похоже, ускользнуло от меня.
У меня есть две коллекции следующего формата:
-----------------------------------------------------------------------
Shop
-----------------------------------------------------------------------
{
"shopId": "1002",
"shopPosId": "10002",
"description": "some description"
}
-----------------------------------------------------------------------
Compte
-----------------------------------------------------------------------
{
"shopId": "9000",
"shopPosId": "0000",
"clientUid": "474192"
}
Я хочу присоединиться к тем, и перед этим я хочу отфильтровать Shop
s, которые не имеют поля shopPosId
.
Вот мой код:
Compte.aggregate([
{
$match:
{
$and:[{"clientUid":clientUid}]
}
},
{
$lookup:
{
from: "Shop",
localField: "shopId",
foreignField: "shopId",
let: {"Shop.shopPosId": "$shopPosId"},
pipeline: [{$match: {"shopPosId": {"$exists": false}}}],
as: "shopDescr"
}
}]
);
возвращаемый результат - undefined
, что означает, что запрос не имеет особого смысла (потому что на самом деле я должен по крайней мере получить массив void).
Это потому, что две коллекции имеют поле shopPosId
? (если это так, разве эта строка let: {"Shop.shopPosId": "$shopPosId"}
не должна позаботиться об этом?)