我有许多相关记录,如下图。
父记录
{
_id:234,
title: "title1",
name: "name1",
association:"assoc1"
},
儿童记录
{
_id:21,
title: "child title",
name: "child name1",
},
我想将这些记录存储到MongoDb中。有人可以帮忙吗?
问候。
答案 0 :(得分:3)
即使MongoDB不支持联接,您也可以通过几种不同的方式组织数据:
1)首先,您可以内联(或嵌入)相关文档。如果您有一些文档层次结构,例如,这种情况很有用。发布和评论。在这种情况下,您可以这样:
{
_id: <post_id>,
title: 'asdf',
text: 'asdf asdf',
comments: [
{<comment #1>},
{<comment #2>},
...
]
}
在这种情况下,所有相关数据都将保存在保存文档中。您可以通过一个查询获取它,但是将新注释推送到post会导致将此文档移动到磁盘上,频繁更新将增加磁盘负载和空间使用。
2)引用是您可以使用的其他技术:在每个文档中,您可以放置包含父/相关对象的 _id 的特殊字段:
{
_id: 1,
type: 'post',
title: 'asdf',
text: 'asdf asdf'
},
{
_id:2
type: 'comment',
text: 'yep!',
parent_id: 1
}
在这种情况下,您将帖子和评论存储在同一个集合中,因此您必须存储其他字段类型。 MongoDB不支持约束或任何其他方式来检查数据的持久性。这意味着,如果您删除_id = 1的帖子,则_id = 2的评论会在 parent_id 中存储已损坏的链接。
您可以使用database references将帖子与不同馆藏甚至数据库中的评论分开,有关详细信息,请参阅您的驱动程序文档。
两种解决方案都可以以不同的方式存储树形结构日期。