如何在MongoDB/Mongoose中引用另一个集合的子集合?

kcrjzv8t  于 2023-01-12  发布在  Go
关注(0)|答案(1)|浏览(172)

我在mongo有一个集合,我们叫它Parent,有一个属性叫children,类似这样

const ParentSchema = mongoose.Schema({
children: [{
//children properties
}],
//other collection properties

当我在这个集合中保存一条记录时,每个子对象都将获得一个如下所示的objectId

"_id" : ObjectId("63ba8421f2f128e2f8e6916d")

然后我有一个集合叫做Report,在这个集合中我可以这样引用Parent

const ReportSchema = mongoose.Schema({
    parent: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Parent",
        required: false
    },

有没有办法在这个集合中定义一个引用孩子的字段,以便创建一个引用特定孩子的记录?2或者我应该使用一个字符串字段并在其中存储孩子的id?
我们的想法是在报表中生成如下记录

{
    "_id" : ObjectId("63bc482afde665158cd71a41"),
    "createdBy" : ObjectId("63b9d635e6225fa0ff29f316"),
    "parent" : ObjectId("63bbac19fde665158cd718e9"),
    "child" : ObjectId("63ba83eef2f128e2f8e69140"),
// other properties
}
2guxujil

2guxujil1#

作为一种良好的做法,我倾向于在报表模式中添加ParentId,而不需要在父项中存储所有子项ID
如果数据很大,可能会产生问题。

const ParentSchema = mongoose.Schema({
//other collection properties
})
const ReportSchema = mongoose.Schema({
    parent: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Parent",
        required: true
    },
    
    // other keys
  })

相关问题