2016-05-30 2 views
2

У меня есть две коллекции, как показано ниже первой коллекции Пользователи:MongoDb запрос на две коллекции

{ 
"userid":123, 
"name":"abc", 
"age":20, 
"status":"Active" 
} 
{ 
"userid":345 
"name":"cde" 
"age":25, 
"status":"Active" 
} 

вторая коллекция UserComment:

{ 
"userid":123, 
"commnet":"Mongodb rocks" 
} 

может кто-нибудь, пожалуйста, помогите мне написав запрос, чтобы получить пользователей с статусом «Active» вместе с флагом, который скажет мне, есть ли у пользователя у комментарий или нет Таким образом, о/р должен быть

{ 
"userid":123, 
"name":"abc", 
"age":20, 
"status":"Active" 
"userscommentFlag":"Y"** 
} 
{ 
"userid":345 
"name":"cde" 
"age":25, 
"status":"Active" 
"userscommentFlag":"N" 
} 

Спасибо.

+0

Вы можете разместить схему из моделей? –

+0

Если вы используете последнюю версию mongo 3.2, вы можете использовать '$ lookup' в конвейере агрегации для объединения/заполнения полей из другой коллекции. См. Https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ – Rudra

ответ

2

Использование $lookup в агрегации трубопровода, это может быть сделано как:

db.users.aggregate(
[{$lookup: 
{from:"userComment", localField:"userid", foreignField: "userid", as: "comments" 
}}]) 

Примечание: $lookup поддерживается в MongoDB 3.2

+0

В mongodb, если вы хотите получить запрос из двух коллекций, используется только «$ lookup», то он доступен в последней версии – karthi

+0

Как я может добавить «usercommentFlag» при использовании $ lookup? – Ranjit

Смежные вопросы