2015-10-11 43 views
2

我想用Mongoose的findOneAndUpdate更新数组中的某个对象。我能够使用Mongo的文档来构建一些适用的本地代码(例如,在Robomongo中),但我不确定相当于Mongoose的语法。用于更新Mongo文档中的数组内的对象的Mongoose语法

这里是我的架构为编码与快递:

var NotesSchema = new Schema({ 
    NoteID: Number, 
    Title: String, 
    Items: [ { ItemID: Number, Title : String, DateCreated : Date, DateModified: Date, Checked: Boolean } ], 
    DateCreated: Date, 
    DateModified: Date 
}); 

在这个例子中,我想更新的ItemTitleItems数组中。

这是我的Mongo代码。它通过获取NoteID,然后ItemID来引用数组,然后它设置Title文本。

db.notesmodels.update( 
    { NoteID : 29751527, "Items.ItemID" : 95373900 }, 
    { $set : { "Items.$.Title" : "Hello 777" } } 
) 

所以猫鼬代码,我想建立将在NoteIDItemIDTitle。我会如何做到这一点与findOneAndUpdate?另外,我可以尝试在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); 
     } 
    }); 

它会返回修改的文档。

+0

工作。谢谢! –

相关问题