我刚刚开始在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}
请问其他人如何处理这种关系的最佳实践建议?再一次,我想在同一集合“公司”中引用母公司(一个法人实体和一个文档)到子公司(单独的法人实体和单独的文档)。
真的需要帮助!预先感谢!
答案 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)
那么它应该已经可以工作了