Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 我是否应该将子文档存储在单独的集合中_Mongodb_Mongoose_Normalization_Nosql - Fatal编程技术网

Mongodb 我是否应该将子文档存储在单独的集合中

Mongodb 我是否应该将子文档存储在单独的集合中,mongodb,mongoose,normalization,nosql,Mongodb,Mongoose,Normalization,Nosql,我构建了一些猫鼬模式,其父子结构并不太复杂。当我创建父对象时,我会包含一个JSON数组,这些JSON与子模式匹配,子文档可以创建,但不会出现在mongodb中的单独子集合中 但是,如果我以后再附加一些子对象,那么这些子对象确实会出现在mongodb中的单独子集合中,父对象中有一个重复/引用(我使用Model.create创建它们,因为我需要访问它们的ObjectId) 由于我是NoSQL的新手,我不确定我是否还应该尝试保留一个单独的子文档集合。只有我的一些孩子出现在单独的收藏中会有什么负面影响

我构建了一些猫鼬模式,其父子结构并不太复杂。当我创建父对象时,我会包含一个JSON数组,这些JSON与子模式匹配,子文档可以创建,但不会出现在mongodb中的单独子集合中

但是,如果我以后再附加一些子对象,那么这些子对象确实会出现在mongodb中的单独子集合中,父对象中有一个重复/引用(我使用Model.create创建它们,因为我需要访问它们的ObjectId)

由于我是NoSQL的新手,我不确定我是否还应该尝试保留一个单独的子文档集合。只有我的一些孩子出现在单独的收藏中会有什么负面影响

最小样本代码 导致土族聚居 导致Arrs收集
调用Arrangement.create()在第二个集合中创建文档。我假设您只需要Tune集合中的子文档数组。见:

你应该做:

newTune.arrangements.push({
    abc: 'abc4'
});

newTune.save();

这听起来像是一个意想不到的结果。您能在这里发布一些完整的、可运行的、最少的示例代码来重现问题,以便我们能够帮助诊断吗?@A.JesseJiryuDavis附带了示例。我应该在我使用mongoose Too的原始帖子中提到,当我有另一种类型的
parent2
的文档也需要参考安排时,该怎么办。在这种情况下,我是否应该保留一个单独的安排集合,并仅使用objectId从父母那里引用?在这种情况下,是的-如果您有两种文件引用第三种,那么将它们分开可能是有意义的。请参见此处关于“嵌入”和“引用”的讨论:或者:
 {    "__v": NumberInt(2),    "_id": ObjectId("511037ef60e5af0000000002"),    "arrangements": {
     "0": {
       "abc": "abc1",
       "_id": ObjectId("511037ef60e5af0000000003")
    },
     "1": {
       "_id": ObjectId("511037ef60e5af0000000004"),
       "abc": "abc2"
    }   },    "name": "test" }
 {
   "abc": "abc2",
   "_id": ObjectId("511037ef60e5af0000000004"),
   "__v": NumberInt(0)
}   
newTune.arrangements.push({
    abc: 'abc4'
});

newTune.save();