Javascript 在MongoDB中被推入子数组并保存为字符串的对象

Javascript 在MongoDB中被推入子数组并保存为字符串的对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,在将对象推入子数组之后,我尝试保存使用Mongoose建模的对象 MyObject.findOne({name:'someName'}, function (err, myObject) { if (err) throw err; myObject.subArray.push({someKey: 'someString'}); myObject.save(function(err) { if (err) throw err; console

在将对象推入子数组之后,我尝试保存使用Mongoose建模的对象

MyObject.findOne({name:'someName'}, function (err, myObject) {
    if (err) throw err;
    myObject.subArray.push({someKey: 'someString'});
    myObject.save(function(err) {
        if (err) throw err;
        console.log()
    });
}
在mongo shell中运行以下查询时:

db.myobjects.find({name:'someName'})
我得到以下回应:

{
    "_id" : ObjectId("54d35cefa5c07abb14955bc3"),
    "name" : "someName",
    "subArray" : [
        "[object Object]"
    ]
}
如您所见,推入子数组的对象已保存为字符串

MyObject模型的模式如下所示:

var MyObjectSchema = new Mongoose.Schema ({
    name : String,
    subArray : [{
        someKey : String
    }]
});

我做错了什么?

您的
myObject.subArray.push({someKey:'someString'})


必须是
myObject['subArray']=[{someKey:'someString'}]

我通过创建子文档架构解决了这个问题:

var SubArraySchema = new Mongoose.Schema({
    someKey : String
}, {_id : false});

var MyObjectSchema = new Mongoose.Schema ({
    name : String,
    subArray : [SubArraySchema]
});

但这不会添加到现有的数组中,只需替换它。你能给我们看看模式吗?@wdberkeley我已经用模式更新了这个问题。