用于在Mongo文档中更新数组内部对象的Mongoose语法
我正在尝试使用Mongoose的findOneAndUpdate
更新数组中的某个对象。 我能够使用Mongo的文档来构build一些可以工作的本地代码(例如在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 });
在这个例子中,我想更新Items
数组中的Item
的Title
。
这是我的Mongo代码。 它通过获取NoteID
然后ItemID
引用数组,然后设置Title
文本。
db.notesmodels.update( { NoteID : 29751527, "Items.ItemID" : 95373900 }, { $set : { "Items.$.Title" : "Hello 777" } } )
所以我想要构build的Mongoose代码将采用NoteID
, ItemID
和Title
。 我将如何做findOneAndUpdate
? 另外,我可以尝试在Express中使用本地Mongo代码,但到目前为止,还没有工作。
mongoose应该看起来像这样:
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); } });
它会返回修改后的文件。