2016-12-24 62 views
0

工作,我認爲我有2個記錄的模型MyModelelemMatch未如預期

{ 
    _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

按照OP中,$ elemMatch查詢工作不理想情況下應該工作,雖然沒有必要在一個單一的條件下使用elemMatch,因爲你已經指定。答案並沒有通過提供替代方案來解決OP的問題 – Rahul

+0

其實我固定了他的查詢並嘗試了它,並且它可以工作,如果這不是他的問題,那麼他可以發佈一個包含更多信息的新問題。 – octohedron