我试图使用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数组中ItemItems
这是我的Mongo代码。它通过获取NoteID,然后获取ItemID,然后设置Title文本来引用数组。
db.notesmodels.update(
    { NoteID : 29751527, "Items.ItemID" : 95373900 },
    { $set : { "Items.$.Title" : "Hello 777" } }
)

因此,我要构建的Mongoose代码将采用NoteIDItemIDTitle。使用findOneAndUpdate我该怎么做?或者,我可以尝试在express中使用本地mongo代码,但到目前为止,这也不起作用。

最佳答案

猫鼬应该是这样的:

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

它将返回修改过的文档。

关于node.js - 用于更新Mongo文档中数组内对象的Mongoose语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33070609/

10-09 22:15