【发布时间】:2017-05-26 16:50:21
【问题描述】:
这是我的架构。
Home = new Schema({
name: { type: String, required: true},
description: {type: String},
administrator: {type : mongoose.Schema.Types.ObjectId, ref: 'User', required: true},
users: [{
_id: {type : mongoose.Schema.Types.ObjectId, ref: 'User'},
email: {type: String},
name: { type: String},
status: { type: Number}
}],
rooms: [Room]
});
module.exports = mongoose.model('Home', Home);
如果我想跨多个文档查找特定用户,我可以这样做
Home.find({"users.email": "johnk@gmail.com"},{users:1})
这将返回所有带有 users.email = johnk@gmail.com 的家庭
但是用户的字段是一个数组。
"users" : [
{
"status" : 0,
"name" : "Yaknow",
"email" : "yaknow@gmai.com",
"_id" : ObjectId("5875a42ea469f40c684de385")
},
{
"status" : 1,
"name" : "johnk",
"email" : "johnk@gmail.com",
"_id" : ObjectId("586e31c6ce07af6f891f80fd")
}
]
(这只是一个家,家多的话会有很多这样的数组) 因此,上面的查询将返回用户收到电子邮件的每个家庭的每个用户数组。 我的问题是,如何将 JohnK 的所有实例更新为 JohnKirtster? 使用它会将数组名称中的每个用户更新为 JohnKirster
Home.update(query, {users.name: "JohnKirster"})
【问题讨论】: