使用MongoDB和PHP将记录插入嵌套数组

时间:2013-06-18 10:24:36

标签: php mongodb

我在MongoDB中有一个名为topic

的集合
topic{
    topic_title: 'thread',
    reply{
        reply_title: 'thread',
        reply_content: 'content'
        reply_created: "2013-06-18 17:54:04" 
    }

}

我想添加对主题的回复,如:

topic{
    topic_title: 'thread',
    reply{
        reply_title: 'thread',
        reply_content: 'content'
        reply_created: "2013-06-18 17:54:04" 
    }
    {
        reply_title: 'reply1',
        reply_content: 'reply2'
        reply_created: "2013-06-18 17:57:04" 
            }
}

我的代码是这样的:

   $reply = array(
                            "reply_title" => $title,
                            "reply_content" =>$content,
                            "reply_created" => date('Y-m-d H:i:s')
        );
    $document = array('$push' => array("reply" => $reply));

    $id = new MongoId($topicid);
    $topic->update(array("_id"=>$id),$document);

它做了类似的事情

     topic{
           topic_title: 'replytitle'
           reply {
                    reply_title: "replytitle"
                    reply_content: "replycontent"
                    reply_created: "2013-06-18 17:57:12"
                 }

          }
      reply{
            reply{
                    reply_title: "replytitle"
                    reply_content: "replycontent"
                    reply_created: "2013-06-18 17:57:12"
             }
            reply{
                    reply_title: "replytitle"
                    reply_content: "replycontent"
                    reply_created: "2013-06-18 17:57:12"
             }
           }

我真的很难做一件简单的事情。这是对回复数组添加回复。有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

由于您发布的内容不是有效的JSON,我对您的文档结构有点不清楚。但假设topic.reply应该是一个文档数组,您可以像这样使用$push运算符:

$topic->update( array( "_id" => $id ), array( "$push" => array( "topic.reply", $reply ) ) );