如何使用mongoDB中的列表?
例如,我有一个文档(类),以及此类中的学生列表,即子文档(学生)。 你不是要在课堂上增加更多的学生。
模型中的:
public function salvar($name,$idClass){
$new = array(
"_id" => $idClass,
"student"=> array(
'idStudent' => new MongoId(),
'name' => $name));
return $this->save($new);
}
但是当你添加一个新学生时,他并没有这样做。
答案 0 :(得分:1)
问题的答案是:
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。
答案 1 :(得分:1)
您提供的答案阐明了您一直在尝试做的事情。但是,解决方案有点复杂。要使用MongoDB执行$push
更新,只需指定您要执行推送更新:
$this->Foo->save(array(
'_id' => $id,
'$push' => array(
"images" => array(
'id' => new MongoId(),
'name' => $name,
'size' => $size
)
)
);
你可以使用mongoNoSetOperator
属性来实现同样的目的,但
$set
,则可能会造成混淆有关在the documentation中使用不同更新运算符的更多信息。