Mongo:引用同一集合中另一个文档的_id字段

时间:2020-11-10 05:17:08

标签: mongodb

我刚刚开始在MongoDB中迈出第一步,所以如果我的问题对您来说有点愚蠢,请原谅。我确实尽力在Google上找到了答案,但到目前为止未能找到答案。

我想问一下处理以下情况的最佳做法是什么。例如,我有“公司”集合(指法人实体列表)。其中的每个文档都具有相同的公用字段,例如“ name_official”,“ name_short”,“ name_group”,“ name_parent”等。字段“ name_parent”应引用同一集合中的母公司(不同的文档)。由于并非所有集合中的公司都应该拥有任何母公司,因此从逻辑上讲,此字段应为“必填:false”。我知道我可以轻松地将此字段的值类型保留为字符串。但是是否可以为此字段分配一个ObjectID类型,以引用包含母公司信息的文档的_id字段?

在此先感谢您的帮助!

/ *更新* / 在尝试了多种填充MongoDB的方式(从csv导入,通过应用中的“创建新公司”表单,并借助专门编写的“ populatedb.js”模块)后,我最终得出这样的模式(带有同一集合中的跨文档引用)不允许将“ name_parent”字段留空。即使您明确定义它为“ required:false”。因此,以下说明无效。 comp_ParentName:{type:Schema.Types.ObjectId,ref:“ company”,必填:false}

请问其他人如何处理这种关系的最佳实践建议?再一次,我想在同一集合“公司”中引用母公司(一个法人实体和一个文档)到子公司(单独的法人实体和单独的文档)。

真的需要帮助!预先感谢!

1 个答案:

答案 0 :(得分:0)

所以您有类似的内容? :-

/** Dependencies */
// Mongoose
const mongoose = require('mongoose')

/** Data Schema */
const CompaniesSchema = new mongoose.Schema({
  // Name Official
  name_official: { type: String, trim: true, required: true },
  // Name Short
  name_short: { type: String, trim: true, required: true },
  // Name Group
  name_group: { type: String, trim: true, required: true },
  // Name Parent
  name_parent: { type: mongoose.Schema.Types.ObjectId, ref: "Companies" }
})

/** Export */
module.exports = mongoose.model('Companies', CompaniesSchema)

那么它应该已经可以工作了