我正在尝试使用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
的{{1}}。
这是我的Mongo代码。它通过获取Items
,然后获取NoteID
来引用数组,然后设置ItemID
文本。
Title
因此,我要构建的Mongoose代码将包含db.notesmodels.update(
{ NoteID : 29751527, "Items.ItemID" : 95373900 },
{ $set : { "Items.$.Title" : "Hello 777" } }
)
,NoteID
和ItemID
。我如何用Title
做到这一点?或者,我可以尝试在Express中使用本机Mongo代码,但到目前为止还没有使用。
答案 0 :(得分:1)
使用猫鼬它应该看起来像这样:
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);
}
});
它将返回修改后的文档。