假设我们有这样的文件
{
"_id" : "1234",
"Data" : {
"Name" : "Pythagoras",
"Like" : "Math"
}
我们改变了想法,并希望将更多内容推向数据 - >就像它看起来一样;
{
"_id" : "1234",
"Data" : {
"Name" : "Pythagoras",
"Like" : ["Math", "Science"]
}
$ push,$ pushAll和$ addToSet等所有原子运算符只在Data-> Like已经是数组时才有效。
我正在使用php-driver。在这个例子中,没有意义不设置Data->喜欢开头的数组,但它不像我的代码那样工作;(
希望你能帮助我,抱歉我的英语不好;)谢谢!
答案 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'] ) ) ) ); } }