【发布时间】:2015-04-21 13:05:27
【问题描述】:
假设我在书籍收藏中有以下文档:
{
_id:0 ,
item: "TBD",
stock: 0,
info: { publisher: "1111", pages: 430 },
tags: [ "technology", "computer" ],
ratings: [ { _id:id1, by: "ijk", rating: 4 }, {_id:id2 by: "lmn", rating: 5 } ],
reorder: false
}
我想更新ratings[k].rating 的值,我只知道集合的 id 和数组评级中存在的对象的 _id。
mongoDB的教程有下面的例子,它使用了对象在数组中的位置,但我想如果更新只能通过知道位置来完成,这意味着我必须先找到位置然后再继续与更新?我可以只用一个电话进行更新吗?如果可以,我该怎么做?
db.books.update(
{ _id: 1 },
{
$inc: { stock: 5 },
$set: {
item: "ABC123",
"info.publisher": "2222",
tags: [ "software" ],
"ratings.1": { by: "xyz", rating: 3 }
}
}
)
【问题讨论】:
-
您的意思是您知道
_id和ratings中的另一个_id的值吗?并且您想在评级中更新评级。对吗? -
这正是我的意思...我尝试了不同的方法,但没有一种方法真正更新了我想要的属性 rating 的值。