我使用的是Mongoose 4.1.12。我的架构:
var UserSchema = new Schema({
_id: {type: String}, // unique nickname
name: {type: String}
});
var BookSchema = new Schema({
authors: [{type: String,ref:"User"}] // list of nicknames
});
让我们假设有2位用户注册了昵称: igor 和 kristina 。
还有一本包含作者集的书: igor , kristina , luke 。
然后我这样做:
Book.findOne({}).populate("authors").exec(function(err,book){...})
现在Book现在只包含“authors”集合中的2个对象,因为 luke 用户不存在。
book: {
authors: [
{ _id: "igor", name: "Igor" },
{ _id: "kristina", name: "Kristina" }
]
}
我期待这样的事情:
book: {
authors: [
{ _id: "igor", name: "Igor" },
{ _id: "kristina", name: "Kristina" },
"luke"
]
}
有可能吗?
答案 0 :(得分:0)
填充ref字段时,引用的基础文档不需要预先存在。
此外,当尚未填充基础文档引用字段,并且您正在检索带有ref字段的文档时,该值将为:
引用链接在运行时发生
因此,在您上面预期的书籍查找显示中,因为您使用的是模式:.populate(),这是最后一个作者数组元素' luke'由于基础'用户'将显示为null。文件丢失