如何设置以下Mongo文档结构?

时间:2012-10-19 01:19:24

标签: mongodb

我正在尝试使用http://docs.mongodb.org/manual/use-cases/storing-comments/

上的示例设置评论系统

但是我对于discussion_id感到困惑。我如何在PHP中设置它?这是一种数据类型吗?

{
    _id: ObjectId(...),
    discussion_id: ObjectId(...),
    slug: '34db',
    posted: ISODateTime(...),
    author: {
              id: ObjectId(...),
              name: 'Rick'
             },
    text: 'This is so bogus ... '
}

3 个答案:

答案 0 :(得分:1)

discussion_id的类型为ObjectId。在此示例中,它包含父讨论文档的_id。

创建讨论文档时,mongodb将为其分配一个_id。您可以在为每条评论创建文档时使用此值。

答案 1 :(得分:1)

为了得到答案,MongoDB不会为您设置discussion_id。它完全没有关系行为,因为它无法预测某些对象之间的内部关系。

您需要使用讨论行的discussion_id从PHP中自行分配_id,如下所示:

$dis = $db->discussion->findOne(array('name' => 'my awesome new one'));
$db->comments->insert(array('discussion_id' => $dis['_id'], 'text' => 'trololol'));

所以你需要记住,MongoDB无法判断任何关系,但是不会在创建文档后如上所示设置此discussion_id,因为可以随时调用MongoId对象而你实际上可以覆盖插入到MongoDB中的_id。如果您想先形成对象,检查它们的完整性然后保存它们,这将特别有用。

答案 2 :(得分:0)

是,ObjectID是BSON数据类型。点击此处了解详情:http://www.mongodb.org/display/DOCS/Object+IDs

需要了解更多有关您使用的语言和技术才能真正告诉您“如何设置”。