2015-10-11 45 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

工作。謝謝! –

相關問題