如何在mongodb中存储相关记录?

时间:2013-06-17 11:54:45

标签: mongodb

我有许多相关记录,如下图。

父记录

{

_id:234,
title: "title1",
name: "name1",
association:"assoc1"

},

儿童记录

{

_id:21,
title: "child title",
name: "child name1",

},

我想将这些记录存储到MongoDb中。有人可以帮忙吗?

问候。

1 个答案:

答案 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将帖子与不同馆藏甚至数据库中的评论分开,有关详细信息,请参阅您的驱动程序文档。

两种解决方案都可以以不同的方式存储树形结构日期。

相关问题