Используйте где в поиске (агрегат) mongodb - PullRequest
0 голосов
/ 11 февраля 2020

Мне нужно проверить, есть ли у пользователя {meta:"city" ,value:"london"} в массиве metas, а затем вернуть его.

Я пробовал это:

db.users.aggregate([
  {
    $lookup: {
      from: "usersmeta",
      localField: "_id",
      foreignField: "user",
      as: "metas"
    }
  },
  {
    $match: {
      phoneverified: true
    }
  }
])

1 Ответ

0 голосов
/ 11 февраля 2020

Вам нужно использовать $ elemMatch для поиска внутри поля массива.

db.users.aggregate([
  {
    $lookup: {
      from: "usersmeta",
      localField: "_id",
      foreignField: "user",
      as: "metas"
    }
  },
  {
    $match: {
      phoneverified: true,
      metas: {
        $elemMatch: {
          meta: "city",
          value: "london"
        }
      }
    }
  }
])

MongoPlayground

...