我们说我保存了这个对象:
{
"_id" : "54122fe6965f599d211ea9ec",
"cat": {
"bla" : "foo"
},
}
我有数百个条目,我需要更改cat数组,比如说:
{
"_id" : "54122fe6965f599d211ea9ec",
"animals" : {
"cat": {
"bla" : "foo"
},
}
}
所以我随后使用我的新阵列进行更新,但是,如果我更新了它,我怎么能删除原来的猫阵列?所以现在我离开了:
{
"_id" : "54122fe6965f599d211ea9ec",
"cat": {
"bla" : "foo"
},
"animals" : {
"cat": {
"bla" : "foo"
},
}
}
我试过了:
$this->database->$collection->remove(array('cat'));
但是没有运气
答案 0 :(得分:1)
MongoDB有一个名为$unset
的更新运算符。您就像使用 $set
运算符一样更新文档,但当然它恰恰相反。您的查询部分需要逻辑上的$exists
运算符:
$this->database->$collection->update(
array( 'cat' => array( '$exists' => true ) ),
array( '$unset' => array( 'cat' => 1 ) ),
array( 'multiple' => true )
);
所以你基本上想要.update()
这就是你正在做的事情,改变现有的文件。其他操作也有意义.insert()
创建和.remove()
删除整个文档。
顺便说一句。您拥有的结构不称为"数组"尽管PHP具体表示法。这些是#34;嵌套文档",数组是方括号内的内容:[]