使用PHP重命名MongoDB集合中每个文档中的字段

时间:2013-12-17 19:16:59

标签: php mongodb

关注this question我收集了upsert: falsemulti: true字段需要设置才能生效。

但是,当我尝试在PHP中编写代码时,我遇到了一个问题:

$conn = new Mongo("mongodb://foo:bar@localhost:27017");
$db = $conn->selectDB("someDB");

$data = array('$rename' => array(
  'nmae' => 'name'
));
$db->command(array(
  'findAndModify' => 'foo',
  'update' => $data,
  'upsert' => 'false',
  'multi' => 'true'
));

运行此脚本后,只有nmae拼写错误的第一个文档更改为name;其余的人仍然说nmae。就像我在没有upsertmulti选项的情况下运行它一样。

我也试过这个:

$data = array('$rename' => array(
  'nmae' => 'name'
),
'upsert' => 'false',
'multi' => 'true'
);
$db->command(array(
  'findAndModify' => 'foo',
  'update' => $data
));

但这也是一样的。

有什么方法可以让它发挥作用吗?

1 个答案:

答案 0 :(得分:2)

findAndModify查询没有“多”选项: http://www.php.net/manual/en/mongocollection.findandmodify.php

您可能想要使用的是更新: http://www.php.net/manual/en/mongocollection.update.php