我有两个集合用户和评论。在用户中有字段:
const user = mongoose.Schema({
_id :("In the form of ObjectID"),
//ObjectId("5a19086e0664e832842f2c24")
user_name :{type: String},
password : {type: String}
});
和评论集:
const comments = mongoose.Schema({
user_id :{type: String},
//"5a19086e0664e832842f2c24" this is user's _id
comment : {type: String}
});
现在我想知道如何用注释集合中字符串类型的用户_id填充这2个集合。 提前谢谢
答案 0 :(得分:0)
首先,您需要更新架构,因为它需要您要填充的集合的引用:
const user = mongoose.Schema({
user_name: { type: String },
password: { type: String }
});
const comments = mongoose.Schema({
user_id: { type: Schema.Types.ObjectId, ref: 'User' },
comment: { type: String }
});
注意: 我删除了_id字段,因为它会自动添加。另请注意,_id
不仅仅是ObjectId
字符串(即使您可以将其视为字符串)。
然后您可以使用populate()
方法:
Comments.find({}).populate('user_id').exec()
答案 1 :(得分:0)
我认为你已经可以使用String来填充像这样的ObjectId:
const user = mongoose.Schema({
user_name : {type: String},
password : {type: String}
}); // users._id will natively be an ObjectId
const comments = mongoose.Schema({
user_id : {type: String, ref:'users'}, // user_id has to be referenced with your "users" model
comment : {type: String}
});
Comment.find({}).populate('user_id').exec();
希望它有所帮助。