2016-04-23 4 views
0

Я вставляю новый документ в . Голоса коллекция, когда пользователь голосует в опросе.Проверьте, существует ли документ в другой коллекции MongoDB Aggregation

{ 
    _id: ObjectId(XXX), 
    card: 11, 
    user: 22 
} 

Теперь, когда пользователь запрашивает для всех опросов я хочу вернуть Voted: 1 поле, если пользователи уже голосовали опросов, т.е. документ уже присутствует в голосов сбора.

Может ли кто-нибудь сказать мне, есть ли способ доступа к документам из другой коллекции в команде агрегации.

+0

Не забудьте отметить ответ, принятый, когда это помогло (наиболее) в решении проблемы. См. Также http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

ответ

0

С помощью mongoDB невозможно получить доступ к нескольким документам в запросе. Вы должны изменить свою модель данных и добавить массив или использовать встроенные документы.

Я мало знаю о вашем случае использования, поэтому, пожалуйста, возьмите это как пример, а не как окончательное решение.

Следующая модель содержит массив для всех голосовавших опросов пользователя. Поэтому вы можете проверить, содержит ли массив опрос и возвращает 1, если это правда.

{ 
    _id: ObjectId(XXX), 
    user: 22, 
    cards: [1, 3, 5] 
} 

См https://docs.mongodb.org/manual/core/data-modeling-introduction/ для получения более подробной информации о моделировании данных в MongoDB.