我试图使用Mongoose的findOneAndUpdate
更新数组中的某个对象。我可以使用mongo的文档来构建一些可以工作的本地代码(例如,在robomongo中),但是我不确定是否有等效的mongoose语法。
这是我用express编码的模式:
var NotesSchema = new Schema({
NoteID: Number,
Title: String,
Items: [ { ItemID: Number, Title : String, DateCreated : Date, DateModified: Date, Checked: Boolean } ],
DateCreated: Date,
DateModified: Date
});
在这个例子中,我想更新
Title
数组中Item
的Items
。这是我的Mongo代码。它通过获取
NoteID
,然后获取ItemID
,然后设置Title
文本来引用数组。db.notesmodels.update(
{ NoteID : 29751527, "Items.ItemID" : 95373900 },
{ $set : { "Items.$.Title" : "Hello 777" } }
)
因此,我要构建的Mongoose代码将采用
NoteID
、ItemID
和Title
。使用findOneAndUpdate
我该怎么做?或者,我可以尝试在express中使用本地mongo代码,但到目前为止,这也不起作用。 最佳答案
猫鼬应该是这样的:
var Notes = mongoose.model('NotesSchema');
Notes.findOneAndUpdate(
{ 'NoteID': 29751527,
'Items.ItemID': 95373900
},
{ $set:{
'Items.$.Title': 'Hello 777'
}
},
function(err,result){
if (!err) {
console.log(result);
}
});
它将返回修改过的文档。
关于node.js - 用于更新Mongo文档中数组内对象的Mongoose语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33070609/