2016-12-24 2 views
0

Я полагаю, у меня есть модель MyModel с 2 записей:elemMatch не работает, как ожидалось

{ 
    _id: ., 
    rating: [ 
    { 
    "name": "user1", 
    "rate": 3 
    } 
    ] 
}, 

{ 
    _id: ., 
    rating: [ 
    { 
    "name": "user2", 
    "rate": 5 
    } 
    ] 
} 

Когда я использую MyModel.find({rating: {$elemMatch: {"name": "user1"}}}) не возвращает никаких записей.

Ожидаю, что вызов будет возвращен в первую запись.

ответ

1

Это MyModel.find({"rating.name": "user1"})

As how mongodb doc says:

Поскольку $ elemMatch определяет только одно условие, то выражение $ elemMatch не является необходимым, и вместо этого вы можете использовать следующий запрос:

db.survey.find(
    { "results.product": "xyz" } 
) 

Также, с $elemMatch было бы

MyModel.find({"rating": {$elemMatch: {"name": "user1"}}})

+1

как в ОП, запрос $ elemMatch не работает который в идеале должен работать, хотя это не обязательно использовать elemMatch в одном состоянии, как вы уже указали. Ответ не решает проблему OP, предоставляя альтернативу. – Rahul

+0

Фактически я исправил его запрос и попробовал его, и он работает, если это не его проблема, тогда он может опубликовать новый вопрос с дополнительной информацией. – octohedron