Mongodb 如何从文档中取消设置字段

Mongodb 如何从文档中取消设置字段,mongodb,cakephp,Mongodb,Cakephp,我有一个文档要删除其中的一个字段。我从他那里得到了答案。但,这是核心PHP代码,我想在CakePHP中了解如何从文档中取消设置字段 我试着用CakePHP编写以下代码 $this->MyModal->id = $id; $this->MyModal->updateAll( array('myField' => array('$exists' => true)), a

我有一个文档要删除其中的一个字段。我从他那里得到了答案。但,这是核心PHP代码,我想在CakePHP中了解如何从文档中取消设置字段

我试着用CakePHP编写以下代码

$this->MyModal->id = $id;
$this->MyModal->updateAll(
                        array('myField' => array('$exists' => true)),
                        array('unset' => array('myField' => true))
                );
编辑

我也试过了

$this->MyModal->updateAll(
    array('$unset' => array('myField' => 1))
 );

但它不起作用。如何取消字段设置

看起来您使用了错误的“全部更新”方法。首先,必须为字段提供一个包含新值的数组,然后应传递一个包含搜索条件的数组。所以为了让它工作,你可以写

 $conditions=array('myField'=>array('$exists'=>true));
 $this->MyModal->updateAll(
       array('$unset'=>array('myfield'=>1)),
       $conditions//array of search conditions
    )

运算符的前缀都是
$
,所以应该是
$unset
@NeilLunn我也尝试了
$unset
,但它给出了异常。什么异常?另外,数据是什么样子的?您使用哪个插件将mongodb连接到cakephp?@NeilLunn我遇到了这个异常
localhost:27017:未知顶级运算符:\$unset
检查集合的名称,您还必须传递一个条件数组,或者如果要更改所有文档,必须提供一个空数组