这里有愚蠢的问题,但我在网上找到一个例子时遇到了麻烦。
我在mongoDB上建立了一个包含对象数组的模型,如下所示:
var ProjectSchema = new Schema({
project_id: { type: String },
item: {
title: { type: String },
owners: [{
first_name : {type: String} ,
middle_name : {type: String},
other_name: {type: String},
last_name: {type: String},
order: {type: Number, 'default': 1}
}]
}
}]
所以你可以看到该项是一个字段列表。然后owners
是一系列字段列表。当我创建项目时,我试图像这样设置所有者:
var newProject = new Models.Project({
'item.title': title,
'item.owners[0].last_name': name,
'item.owners[0].order': 1
});
这不会产生错误,但项目字段也不会保存(item.title
保存正常)。
我也试过这个,但它给了我一个错误:
var newProject = new Models.Project({
'item.title': title,
item.owners.push({last_name: name, order: 1})
});
我应该如何参考这些子文档,以便保存它们?
答案 0 :(得分:1)
它是一个简单的JSON对象。使用Javascript,它非常直接。下面的代码生成mongoDB doc中给出的示例对象:
var address1 = new Object();
address1.street = "123 Fake Street";
address1.city = "Faketon";
address1.state = "MA";
address1.zip = "12345";
var address2 = new Object();
address2.street = "1 Some other Street";
address2.city = "Boston";
address2.state = "MA";
address2.zip = "12345";
var data = new Object();
data._id = "joe";
data.name = "Joe Bookreader";
var addressArray = new Array();
addressArray.push(address1);
addressArray.push(address2);
data.addresses = addressArray;
alert(JSON.stringify(data));
答案 1 :(得分:1)
不要在新文档的字段中使用点表示法,而是使用doc的实际结构创建它:
var newProject = new Models.Project({
item: {
title: title,
owners: [{
last_name: name,
order: 1
}]
});