如何使用mongodb node.js中的字符串填充_id字段?

时间:2017-12-01 07:20:04

标签: node.js mongodb

我有两个集合用户和评论。在用户中有字段:

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个集合。 提前谢谢

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();

希望它有所帮助。