私はMongoDBとLithiumの両方に不慣れであり、ネストされたドキュメントを操作する「良い方法」を実際に見つけることができません。試してみると気づきました
$user = Users::find('first' ... );
$user->somenewfield = array('key' => 'val');
「somenewfield」で取得するのはDocumentオブジェクトです。しかし、DocumentArrayクラスもあります-それらの違いは何ですか?
電話すると
$user->save();
これにより、Mongoが生成されます(予想どおり)。
"somenewfield" : {
"key": "value"
}
OKですが、後で新しいキー値を配列に追加して試してみたい場合
$user->somenewfield['newkey'] = 'newval';
var_dump($user->somenewfield->to('array')); // shows the old and the new key-value pairs
$user->save(); // does not work - the new pair is not added
リチウムを使用してドキュメントに新しいアレイを追加する正しい方法は何ですか?配列を更新する/配列に新しい値を追加する正しい方法は何ですか?配列値のキーを指定しますか?
よろしくお願いします。私はちょっと立ち往生しています...ドキュメントを読んだり、コードを読んだりしています...しかし、ある時点で、すべてを一人で見つけるのが難しくなります:)
編集:最後に私が見つけたのは、ネストされた配列を使用する方法は$pushと$pullを使用することです。
Users::update(array('$push' => array('games' => (string) $game->_id)),
array(
'_id' => $this->user()->_id,
'games' => array('$ne' => (string) $game->_id)),
array('atomic' => false));