我为饮料列表创建了一个mongodb集合。架构如下。在其中我制作了一个用户可以选择的饮料清单。
var drinkSchema = mongoose.Schema({
name: String,
date: {
type:Date,
// default: new Date()
default: Date.now()
},
caffeineLevel: String
});
var Drink = mongoose.model('Drink',drinkSchema);
module.exports = Drink;
我还为我的应用用户创建了第二个架构。理想情况下,用户可以通过从其他模式中选择饮料来将数据移动到此模式中。此架构对每个用户都是唯一的。
var mongoose = require('mongoose');
var myDrinkSchema = mongoose.Schema({
name: String,
date: {
type:Date,
default: Date.now()
},
caffeineLevel: String
// drinkWant: [{type:mongoose.Schema.Types.ObjectId,ref:'Drink'}]
});
var myDrink = mongoose.model('myDrink',myDrinkSchema);
module.exports = myDrink;
我很抱歉我对此事没有更多的了解。我搜索了文档并遇到了数据建模http://docs.mongodb.org/manual/core/data-model-design/。但这似乎没有具体的答案。
是否可以在架构方法中执行此操作?
答案 0 :(得分:0)
你说得对,但是因为你指定了对另一个集合的引用并不意味着mongoose会为你填充它。实际上,您必须指定要填充的字段,并根据架构中该字段的ref
填充这些字段。如果您取消注释drinkWant
数组并使用Drink
_id填充它,那么您应该可以.populate()
结果。
您只需在运行查询后链接.populate()
即可。例如:
myDrink.find({name: "someName"}).populate('drinkWant')
.exec(function(err, results) {
console.log(results);
});
了解更多信息see here。