Как найти повторяющиеся значения в разных полях объекта? - PullRequest
0 голосов
/ 29 ноября 2018

Как мне выполнить поиск с помощью mongoose, чтобы найти повторяющиеся значения в разных полях?


Вот пример документа:

{
 "followers": {
               {
                "_id": "5bf6d610d3a3f31a6c75a9f4"
               },
               {
                "_id": "5bf6d610d3a3f31a6c75a8c3"
               }
              },
 "following": {
               {
                "_id": "5bf6d610d3a3f31a6c75a9f4"
               },
               {
                "_id": "5bf6d610d3a3f31a6c75b7a2"
               }
              },
}

Я хочу найти такие же _id значения в полях followers и following.

Ожидаемый результат:

{
 {
  "_id": "5bf6d610d3a3f31a6c75a9f4"
 }
}

Какой запрос я должен использовать?

1 Ответ

0 голосов
/ 29 ноября 2018

Попробуйте с этим:

db.collection.aggregate([
    { $unwind : "$followers"},
    { $unwind : "$following"},
    { $project : {
        _id: 0,
        matchId: { $cond: [ {$eq: [ "$followers._id", "$following._id" ]} ,
          "$following._id", null ] }
    }},
    {$match : {"matchId" : {$ne : null}}}
])

Вывод:

/* 1 */
{
    "matchId" : "5bf6d610d3a3f31a6c75a9f4"
}
...