我是mongo和mongoose的新手,我想知道当我们有一个嵌入式数据模型时,我们如何添加,删除或编辑数据库中的对象:
var userSchema = mongoose.Schema({
local : {
email : String,
password : String,
},
houses : [
{
phone_numbers : [ {number: String} ],
adresse : String,
}
]
});
module.exports = mongoose.model('User', userSchema);
例如,我想向我的用户添加一个新的“房子”。
所以我试过了:
User.findById(req.user.id, function(err, user){
user.houses.adresse = 'TEST';
user.save();
});
但它似乎没有用,我没有找到如何在mongoose docs中做到这一点。关于如何实现这一目标的任何想法?
感谢您的帮助!
答案 0 :(得分:9)
您可以将模型分开以便于阅读,并且您可以使用House
模型将子文档添加到User
之类的;
<强> user.js的强>
var House = require("House");
var userSchema = mongoose.Schema({
email : String,
password : String,
houses : [ House.schema ]
});
module.exports = mongoose.model('User', userSchema);
<强> House.js 强>
var houseSchema = mongoose.Schema({
phone_numbers : [ String ],
adresse : String,
});
module.exports = mongoose.model('House', houseSchema);
在您的控制器中;
var User = require("models/User");
var House = require("models/House");
......
User.findById(req.user.id, function(err, user){
var houseModel = new House();
houseModel.adresse = "TEST";
user.houses.push(houseModel);
user.save();
});
答案 1 :(得分:1)
foobars = FooBar.objects.select_related("bar").filter(foo=foo_instance)
for foobar in foobars:
print(foobar.bar.barfield, foobar.foobarfield)