Объединить документы из разных коллекций - PullRequest
0 голосов
/ 03 июля 2019

У меня три коллекции. Я хочу объединить все три документа коллекции на основе номера мобильного телефона, если они совпадают, в противном случае добавить в качестве нового документа и сохранить их в новой коллекции.

(1) Коллекция пользователя

[
{id: ObjectId(...), name:"john", mobile:1234, city:"London"},
{id: ObjectId(...), name:"mike", mobile:1111, city:"Berlin"},
{id: ObjectId(...), name:"jenny", mobile:2222, city:"Paris"},
]

(2) Коллекция хобби

[

{id: ObjectId(...), hobby:"hockey", mobile:1111},
{id: ObjectId(...), hobby:"cricket", mobile:1234},
{id: ObjectId(...), hobby:"movies", mobile:6666},
]

(3) Коллекция ключевых слов

[
{id: ObjectId(...), keyword:"cr", mobile:1234},
{id: ObjectId(...), keyword:"hk", mobile:2222},
{id: ObjectId(...), keyword:"uk", mobile:7777}
]

Хотя мне удалось объединить все три коллекции документов в один.

db.finalCollection.save(db.users.find().toArray());
db.finalCollection.save(db.hobbies.find().toArray());
db.finalCollection.save(db.keyword.find().toArray());

Но я не знаю, как объединить документы с одним и тем же номером мобильного телефона и в случае несоответствия добавить в качестве нового документа.

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

[
  {id: ObjectId(...), name:"john", mobile:1234, city:"London", 
  hobby:"cricket",keyword:"cr"},
  {id: ObjectId(...), name:"mike", mobile:1111, city:"Berlin", 
  hobby:"hockey"},
  {id: ObjectId(...), name:"jenny", mobile:2222, city:"Paris", 
  keyword:"hk"},
  {id: ObjectId(...), hobby:"movies", mobile:6666},
  {id: ObjectId(...), keyword:"uk", mobile:7777}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...