Если у меня есть данные, хранящиеся в двух коллекциях в MongoDB, например:
Коллекция 1:
opened = [{id: 1, value: 1123}, {id: 2, value: 4231}, {id: 2, value: 3322}...]
Коллекция 2:
synched = [{id: 1, value: 12343}, {id: 2, value: 12322}, {id: 1, value: 12322}...]
Теперь я знаю, что могу сделать два вызова в БД и получить данные из обоих, но меня интересует потенциальная агрегация вызова и объединение данных из обеих коллекций, чтобы я получил следующий результат:
result = {synched: [{id: 1, value: 12343},{id: 1, value: 12322}], opened: [{id: 1, value: 1123}]}
Так что в моем случае, в настоящее время я делаю стандартный запрос только дважды:
db.opened.find({id: 1}, function(err, res){})
db.synched.find({id: 1}, function(err, res){})
Есть ли способ объединить их?
РЕДАКТИРОВАТЬ:
Оригинальный вопрос, который я разместил, немного изменился. Вот небольшое изменение, с которым мне нужно иметь дело, что ответ ниже не поддерживает.
Что если у меня есть массив идентификаторов, которые мне соответствуют:
{ $match: { 'id': {$in: [1,2]} }}
Итак, limit
вызов действительно испортил это. Все, что мне нужно, это все документы из synched
и все документы из opened
, которые соответствуют любому из идентификаторов в массиве, но выполнение ограничения возвращает только первое обнаруженное. Это не всегда так. Может быть несколько документов с одним и тем же свойством id
. Это свойство не _id
, которое является уникальным.
Любая помощь будет оценена.