推入子数组的对象在 MongoDB 中保存为字符串
Object pushed into subarray saved as string in MongoDB
在将对象推入子数组后,我正在尝试保存使用 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()
});
}
当我运行下面的查询在mongoshell:
db.myobjects.find({name:'someName'})
我收到以下回复:
{
"_id" : ObjectId("54d35cefa5c07abb14955bc3"),
"name" : "someName",
"subArray" : [
"[object Object]"
]
}
如您所见,推入subArray
的对象已保存为字符串。
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]
});
在将对象推入子数组后,我正在尝试保存使用 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()
});
}
当我运行下面的查询在mongoshell:
db.myobjects.find({name:'someName'})
我收到以下回复:
{
"_id" : ObjectId("54d35cefa5c07abb14955bc3"),
"name" : "someName",
"subArray" : [
"[object Object]"
]
}
如您所见,推入subArray
的对象已保存为字符串。
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]
});