MongoDB объединяет и получает несоответствующие результаты - PullRequest
1 голос
/ 21 июня 2020

Привет всем, у меня есть 2 коллекции с названиями «members» и «offer» в mongoDB. Когда участник отправляет предложение другому, мой веб-сервис сохраняет его в коллекции предложений.

Коллекция «участников» выглядит как:

[
    {
         "_id": "5ee00pp0ebfd4432145233344",
        "Fname": "John",
        "Lname": "Lastname",
        "Email": "JohnLastName@gmail.com",
    },
    {
         "_id": "yyyy44p0ebfd4432145233355",
        "Fname": "Ashley",
        "Lname": "Lastname",
        "Email": "AshleyLastName@gmail.com",
    },
    {
         "_id": "yyyy44p0ebfd4432145233355",
        "Fname": "Sue",
        "Lname": "Lastname",
        "Email": "SueLastName@gmail.com",
    }
]

когда Джон отправляет предложение Эшли

Коллекция «предложений» выглядит так:

[
       {
                "_id": "5eea6e62881835271415fd25",                                
                "OfferMail": "JohnLastName@gmail.com",
                "Email": "AshleyLastName@gmail.com",
       }
]

Теперь мой вопрос: как я могу получить всех участников, кроме Эшли?

Ответы [ 2 ]

1 голос
/ 21 июня 2020
 db.members.aggregate([
  {
    "$lookup": {
      "from": "offers",
      "localField": "Email",
      "foreignField": "Email",
      "as": "docuentInB"
    }
  },
  {
    $match: {
      $expr: { $eq: [{ $size: "$docuentInB" }, 0 ] }
    }
  },
  {
    $project: {
      docuentInB: 0
    }
  }
])````
1 голос
/ 21 июня 2020

Используйте оператор $ not. Например, db.members.find ({"Электронная почта": {"$ not": "AshleyLastName@gmail.com"}})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...