как объединить две коллекции в mongodb - PullRequest
0 голосов
/ 26 июня 2018

У меня есть 2 коллекции userInfo и transationHistory.userInfo содержит userId, registerDate и т. д., а transationHistory содержит userId, transationId, itemId и т. д.
базы данных выглядят следующим образом, существует более 1 тыс. данных:

transationHistory:{
 {
   transationId:asd123
   itemId:A
   userId:123
 }

 userInfo:{
  userId:123
  registerDate:"06-18-2018"
 }

, поэтому я хочу получитьпользователи, которые купили элемент А с их регистрацией.

db.transationHistory.aggregation({$match:{item:"A"}},{$project:{userId:1}})  

затем я получаю список userId, затем

db.userInfo.aggregation({$match:{userId:{$in:[<listOfUserId>]}}},{$project:{registerDate:1}})

, затем я помещаю оба набора результатов в excel и использую функцию vlookup, чтобы получить объединение.Есть ли более простой способ использовать запрос mongodb для получения объединения?

РЕДАКТИРОВАНИЕ:

Я знаю, как это сделать в MySQL, как указано ниже:

SELECT T.itemId,T.userId,U.registerDate
FROM transationHistory T,userInfo U
WHERE T.userId=U.userId AND T.itemId="A"

пример вывода:

{
itemId:A  
userId:123  
registerDate:"06-18-2018"
}

{
itemId:A  
userId:1435  
registerDate:"06-16-2018"
}

1 Ответ

0 голосов
/ 26 июня 2018

Вам нужно использовать агрегатную функцию с $ lookup.

.aggregate([
        {
            $lookup: {
               from: "transationHistory",
               localField: "userId",
               foreignField: "userId",
               as: "result"
            }
        }, //other parts of aggregate
    //match, project, group or whatever you need 
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...