Задать вопрос

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

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

Каким запросом можно получить все объекты в которых есть поле visits[x]['userId'] = 1
  • Вопрос задан
  • 2961 просмотр
Подписаться 5 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Skillbox
    Курс Java-разработчик
    4 месяца
    Далее
  • Яндекс Практикум
    Фулстек-разработчик
    16 месяцев
    Далее
Решения вопроса 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, но это какая-то неправильная архитектура. Индексы точно так работать не будут.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы