我有一個用戶,並在裏面我保存他評價的項目列表。MongoDB - 更改值的關鍵匹配
> db.users.findOne()
{
"_id" : ObjectId("5321985944aebf2ca6f2075f"),
"ratings" : [
{
"532192d344aebf2ca6f2075e" : 0
},
{
"532199d144aebf2ca6f20760" : 1
}
],
"email" : "[email protected]",
"name" : "Joe Bloggs"
}
收視率形式:
{ item_id : <score> }
的問題是,如果用戶速率在同一項目兩次(不同等級),而不是換舊人,這將增加數組的新元素。
我使用$addToSet
來避免重複,但我想替換舊的評分。
我現在正在以一種複雜的方式來做這件事,有沒有更簡單的方法? (我正在使用Java,但解決方案沒有關係並不重要。)
其實,閱讀這個問題時,會涉及更多一點。 $ set可能是正確的,或者甚至是$ inc,但是這是試圖保持一個唯一的** set **不重複的項目。 –
我認爲這將工作,如果在文檔中添加/更新評分的唯一方法是使用$ set。那麼就不會有任何重複。 –
閱讀我提供的答案以及再次閱讀問題,你應該看到這個地方不足。這是我給你留下評論的唯一原因。所以你可以理解這一點。 –