使用cakephp2.3和mongoDB,如何在文档中添加数组?
如何处理mongoDB中的列表 例如,我有一个文档(类)和该类学生的列表,即子文档(学生)。 你所不知道的,是给一个班增加更多的学生 在模型中:使用cakephp2.3和mongoDB,如何在文档中添加数组?,mongodb,cakephp-2.3,Mongodb,Cakephp 2.3,如何处理mongoDB中的列表 例如,我有一个文档(类)和该类学生的列表,即子文档(学生)。 你所不知道的,是给一个班增加更多的学生 在模型中: public function salvar($name,$idClass){ $new = array( "_id" => $idClass, "student"=> array( 'idStudent' => new MongoId(),
public function salvar($name,$idClass){
$new = array(
"_id" => $idClass,
"student"=> array(
'idStudent' => new MongoId(),
'name' => $name));
return $this->save($new);
}
但是当你添加一个新学生时,他不是这样工作的。问题的答案是:
public function salvar($name,$size,$id){
$this->mongoNoSetOperator = '$push';
// fixed array data structure
$susp = array(
"_id" => $id,
"images"=> array(
array(
'id' => new MongoId(),
'name' => $name,
'size' => $size
)
)
);
return $this->save($susp);
}
注意:通过清晰客观的回答感谢github的Garamon。如何执行$push更新
你提供的答案阐明了你一直在努力做什么。然而,解决方案有点复杂。要使用MongoDB执行$push
更新,只需指定要执行推送更新:
$this->Foo->save(array(
'_id' => $id,
'$push' => array(
"images" => array(
'id' => new MongoId(),
'name' => $name,
'size' => $size
)
)
);
您可以使用mongoNoSetOperator
属性实现相同的功能,但是
$set
,则可能会造成混淆