蒙戈DB:一个字段更改为阵列
问题描述:
假设我们有这样蒙戈DB:一个字段更改为阵列
{
"_id" : "1234",
"Data" : {
"Name" : "Pythagoras",
"Like" : "Math"
}
一个文档,我们改变了主意,想要把更多的东西,以数据 - >像这样它看起来像;
{
"_id" : "1234",
"Data" : {
"Name" : "Pythagoras",
"Like" : ["Math", "Science"]
}
所有的原子操作符,如$推,$ pushAll和$ addToSet作品只是当数据 - >像已经是一个数组。
我正在使用php-driver。在这个例子中,没有必要在开始时将Data-> Like设置为数组,但它在我的代码中不起作用;(
希望你能帮助我,并对我的糟糕英语感到抱歉;)谢谢!
答
您必须迭代所有文档并将其值更改为数组。例如,你可以做到这一点:
$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'])))); } }
谢谢,我不想用我所有的证件做,但我想我可以奶源修复它在我想要的方式。我希望只是添加数据的运营商;( – Mattias 2012-02-25 12:33:58