1

我有许多相关的记录,如下所示。

父记录

{

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

},

儿童记录

{

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

},

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

问候。

4

1 回答 1

3

即使 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中。

您可以使用数据库引用将帖子与不同集合甚至数据库中的评论分开,有关更多详细信息,请参阅您的驱动程序文档。

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

于 2013-06-17T14:10:20.207 回答