这是我的Mongoose架构。
book_schema = mongoose.Schema({
book_name: {
"type": String
},
pages: {
"type": Object,
"default": {}
}
});
这是我的文档。
{ "book_name": "some book",
"pages": {
1: {"lenght": 7, "text": "bla bla"},
2: {"lenght": 11, "text": "bla bla bla"}
}
}
这是查找文档和更改值的代码。
Book.findOne({book_name: "some book"}, function(err, book){
book.pages[1].lenght = 10; ##change 7 to 10
book.save(function(err){
console.log(err);
});
});
以上代码由于某种原因无法更改该值。我试图改变另一个它工作得很好。
答案 0 :(得分:-1)
将 update()
方法与 $set
运算符一起使用以更改值。例如
Book.update(
{book_name: "some book"},
{$set: { "pages.1.lenght": 10 }}
,function (err, result){
if (err) console.log(err);
console.log(result);
});
对于非静态密钥,请使用bracket notation创建更新文档以创建属性,例如
var key = 1,
updateObj = {};
updateObj["pages."+ key +".lenght"] = 10;
Book.update(
{book_name: "some book"},
{$set: updateObj}
,function (err, result){
if (err) console.log(err);
console.log(result);
});