我有许多相关的记录,如下所示。
父记录
{
_id:234,
title: "title1",
name: "name1",
association:"assoc1"
},
儿童记录
{
_id:21,
title: "child title",
name: "child name1",
},
我想将这些记录存储到 MongoDb 中。任何人都可以帮忙吗?
问候。
我有许多相关的记录,如下所示。
父记录
{
_id:234,
title: "title1",
name: "name1",
association:"assoc1"
},
儿童记录
{
_id:21,
title: "child title",
name: "child name1",
},
我想将这些记录存储到 MongoDb 中。任何人都可以帮忙吗?
问候。
即使 MongoDB 不支持连接,您也可以通过几种不同的方式组织数据:
1)首先,您可以内联(或嵌入)相关文档。如果您有一些文档层次结构,例如帖子和评论,这种情况很有用。在这种情况下,您可以这样:
{
_id: <post_id>,
title: 'asdf',
text: 'asdf asdf',
comments: [
{<comment #1>},
{<comment #2>},
...
]
}
在这种情况下,所有相关数据都将在保存文档中。您可以通过一个查询来获取它,但是推送新评论发布会导致将该文档移动到磁盘上,频繁更新会增加磁盘负载和空间使用量。
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中。
您可以使用数据库引用将帖子与不同集合甚至数据库中的评论分开,有关更多详细信息,请参阅您的驱动程序文档。
两种解决方案都可以存储树形结构的日期,但方式不同。