Каким запросом в mongodb можно получить объекты, содержащие объект с полем равным «x»?

Например у нас в коллекции хранятся такие объекты:
"id" : 1,
"visits" : [ 
        {
            "userId" : "1",
            "date" : 1390482788
        }, 
        {
            "userId" : "2",
            "date" : 1386912055
        },

Каким запросом можно получить все объекты в которых есть поле visits[x]['userId'] = 1
  • Вопрос задан
  • 2961 просмотр
Решения вопроса 2
nekipelov
@nekipelov
db.collection.find( {visits: {userId: 1}} );

или

db.collection.find( {"visits.userId": 1} );
Ответ написан
jakulov
@jakulov
На сколько помню так:

db.collection.find( { visits: { $elemMatch: { userId: 1 } } } );
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kaasius
Может и можно как-то через дот-нотацию и $elemMatch, но это какая-то неправильная архитектура. Индексы точно так работать не будут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы