【发布时间】:2014-01-17 10:15:12
【问题描述】:
我构建了一个简单的猫鼬模式,如下面的模式
var schema = new mongoose.Schema({
user: {type:String, required:true, unique:true},
msgs: [
{
test1:{url:String, name:String},
test2:String
}
]
});
var model = mongoose.model('test', schema);
现在我尝试插入一个文档并将一些值推送到如下所示的文档中
var update = {"$push":
{
'msgs':
{
'test1':{'name':'default id','url':'default url' } ,
'test2': 'abc'
}
}
};
model.update({user:'username'},update,{ upsert: true },function(err,data){
if(err) console.error(err);
else console.log(data);
});
由于模型允许 upsert,所以文档插入成功,但是当我查看创建的文档时。 结果是
{
'user': 'username',
'msgs':[ { 'test2':'abc', '_id':'xxxxxxxxxx' } ]
}
在我看来,我没有将 {test1:{url:'',name:''}} 推入数组,我无法找出问题所在。
【问题讨论】:
-
我建议您创建另一个模型,例如“Msg”并设置所需的字段。在插入子文档时使用此 Msg 模型