Javascript Mongoose未保存嵌入式对象数组

Javascript Mongoose未保存嵌入式对象数组,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我定义了以下模式: var mongoose = require('mongoose'); var VenueSchema = new mongoose.Schema({ name: String, email: String, phone: String, address: {address1: String, address2: String, suburb: String, state: String, postCode: Number, country:

我定义了以下模式:

var mongoose = require('mongoose');

var VenueSchema = new mongoose.Schema({
    name: String,
    email: String,
    phone: String,
    address: {address1: String, address2: String, suburb: String, state: String, postCode: Number, country: {type: String, default: 'Australia'}},
    ABN: String,
    website: String,
    openingHours: [{order: Number, day: Date, open: String, close: String}],
    closedDays: [{startDate: Date, endDate: Date}],
    supportEmail: String
});

var Venue = mongoose.model('Venue', VenueSchema);

module.exports = Venue;
我在Express中定义了以下方法来保存文档:

app.post('/api/venues/:id', function (req, res) {
        Venue.findOneAndUpdate({_id: req.params.id}, req.body, {upsert: true, new: true}, function (err, venue) {
            if (err) {
                res.status(500).send(err);
            }
            else {
                res.status(200).json(venue);
            }                
        });
    });
问题是,当文档包含
openingHours
数组时,生成的保存文档在
mongo
控制台中如下所示:

"openingHours" : [
        {
                "_id" : ObjectId("563be68ce65bf8543c6ec5e0")
        }
],
我可以确认,对象正在被传递给Express方法,如
req.body.openingHours
具有正确的长度和范围内的对象。显然有些事情正在发生,否则
Mongo
将不会填充
\u id
文件,但是,我不明白为什么会发生这种情况。我没有为此定义单独的模式,它只是一个嵌入在文档中的对象数组

一定有什么简单的东西我错过了

更新 如果我使用
Express
方法将代码更改为以下内容:

Venue.update({_id: req.params.id}, req.body, {multi: true}, function (err, raw) {
            if (err) {
                res.status(500).send(err);
            }
            else {
                Venue.findById(req.params.id, function(err, venue) {
                    if (err) {
                        res.status(500).send(err);
                    }
                    else {
                        res.status(200).json(venue);
                    }
                });
            }
        });
然后,我的
mongo
控制台如下所示:

"openingHours" : [
        {
                "order" : 0,
                "day" : "Monday",
                "open" : "10:00",
                "close" : "22:00",
                "_id" : ObjectId("563bf15ac16e007832e025ae")
        },
        {
                "order" : 1,
                "day" : "Tuesday",
                "open" : "10:00",
                "close" : "22:00",
                "_id" : ObjectId("563bf197c16e007832e025af")
        },
        {
                "order" : 2,
                "day" : "Wednesday",
                "open" : "10:00",
                "close" : "22:00",
                "_id" : ObjectId("563bf19bc16e007832e025b0")
        }
],
现在我不明白两件事: 1.为什么
mongo
对数组中嵌入的对象的处理与普通的旧嵌入对象不同?i、 e.保存或更新时,嵌入的
地址
对象没有分配给它的
\u id
字段。
2.为什么
findOneAndUpdate
的行为如此不同?是因为
{multi:true}

hi@sandora,你找到了解决方法吗?我也在为同样的问题挣扎。