Mongodb:将字段更改为数组

时间:2012-02-25 11:31:23

标签: php mongodb mongodb-php

假设我们有这样的文件

{
    "_id" : "1234",
    "Data" : {
         "Name" : "Pythagoras",
         "Like" : "Math"
}

我们改变了想法,并希望将更多内容推向数据 - >就像它看起来一样;

{
    "_id" : "1234",
    "Data" : {
         "Name" : "Pythagoras",
         "Like" : ["Math", "Science"]
}

$ push,$ pushAll和$ addToSet等所有原子运算符只在Data-> Like已经是数组时才有效。

我正在使用php-driver。在这个例子中,没有意义不设置Data->喜欢开头的数组,但它不像我的代码那样工作;(

希望你能帮助我,抱歉我的英语不好;)谢谢!

1 个答案:

答案 0 :(得分:1)

您必须迭代所有文档并将值更改为数组。例如,您可以使用以下方法执行此操作:

$m = new Mongo();
$c = $m->yourdbname->yourcollectionname;

foreach ( $c->find() as $r )
{
    if ( !is_array( $r['Data']['Like'] ) )
    {
        $c->update( array( '_id' => $r['_id'] ), array( '$set' => array( 'data.like' => array( $r['data']['like'] ) ) ) );
    }
}