Вернуть все документы из коллекции, но добавить ключ к тем, которые удовлетворяют запросу - PullRequest
2 голосов
/ 09 июля 2020

Я новичок ie в MongoDB.

Я хотел знать, можно ли достичь чего-то подобного?

users Collection : 

    [
      {
        name : "John",
        Gender : "Male",
      },
      {
        name : "Alex",
        Gender : "Male",
      },
      {
        name : "Eva",
        Gender : "Female",
      }
    ]
    db.users.find({Gender : "Male"});

    Response :

    [
      {
        name : "John",
        Gender : "Male",
        isMatchingQuery : true,
      },
      {
        name : "Alex",
        Gender : "Male",
        isMatchingQuery : true,
      },
      {
        name : "Eva",
        Gender : "Female",
        isMatchingQuery : false,
      }
    ]

Можем ли мы получить что-то подобное, где каждый документ return в ответ, но те, которые удовлетворяют запросу, имеют ключ, добавленный со значением true, а другие не удовлетворяют как false. Возможно ли через агрегат?

Ответы [ 3 ]

1 голос
/ 09 июля 2020

Используйте это в одной строке:

db.users.aggregate([{$set:{"isMatchingQuery":{$eq:["$Gender","Male"]}}}])

оформить заказ игровая площадка

0 голосов
/ 10 июля 2020

Спасибо всем за помощь. Интересно, что пока я копал больше, я нашел другой способ сделать это. Что-то вроде взлома.

db.users
    .aggregate([
      {
        $project: {
          _id: 1,
          isMatchingQuery: {$eq: ["$Gender", "Male"] },
          name: 1,
        },
      },
    ])

Работает одновременно и для $ set, и для $ project, для кого-то, если они хотят указать только c ключи в ответе.

0 голосов
/ 09 июля 2020

Примерно это возможно с фреймворком агрегации .

Это будет выглядеть так:

db.users.aggregate([
  {
    $set: { "isMatchingQuery": { $eq: [ "$Gender", "Male" ] } }
  }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...