用于更新Mongo文档中数组内对象的Mongoose语法

时间:2015-10-11 22:05:02

标签: node.js mongodb express mongoose

我正在尝试使用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" } } ) NoteIDItemID。我如何用Title做到这一点?或者,我可以尝试在Express中使用本机Mongo代码,但到目前为止还没有使用。

1 个答案:

答案 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);
        }
    });

它将返回修改后的文档。