Mongodb Aggregate - как ссылаться на другое поле в матче - PullRequest
0 голосов
/ 01 марта 2020

У меня есть конвейер агрегации, который должен фильтровать результаты путем сопоставления двух полей

Использование ссылки на поле не дает результатов

$match: {
  "item.setid": "$uid"
}

Замена ссылки на поле строкой возвращает результаты

$match: {
  "item.setid": "example-set-id"
}

схема объекта:

{
    uid: <string>,
    item: {
        setid: <string> // references the uid above
    }
}

1 Ответ

0 голосов
/ 01 марта 2020

Для сравнения полей самого документа необходимо использовать $ expr operator

$match: {
   $expr: {
     $eq: ["$item.setid", "$uid"]
   }
}
...