mongoドキュメントに配列を作成したので、次のようになります。
{ "_id" : ObjectId("4f59e19d0b7aab2903000004"),
"details" : { x:1, y:2 }
}
次に、新しい値を配列にプッシュしようとしています。
db.users.update({"_id" : ObjectId("4f59e19d0b7aab2903000004")},{$push: {"details": {"z":3}}});
ただし、エラーが発生します。
Cannot apply $push/$pushAll modifier to non-array
配列に情報を実際に追加できる唯一の方法は、ドット表記を使用して情報を追加することです。
db.users.update({"_id" : ObjectId("4f59e19d0b7aab2903000004")},{"details.z": 3});
それはうまくいくようですが、私が約30の値の配列を持っているとき、それは少し退屈に思えます。
わかりやすくするために、これらを手動で入力するだけでなく、リチウムPHPフレームワークを使用しているため、配列をループして「詳細」を付加することができます。それぞれの鍵に、しかし私はそれが必要であるとは思わない。値を配列にプッシュしない理由について私が見逃しているものはありますか?
(私のリチウムコードは次のとおりです:)
User::update(array('$push'=>array('details'=>array('z'=>3))), array('_id'=>$id))
ありがとう、
ダン