PHPからMongoDBに空の連想配列(hashmap
/ dictionary
/ dict
/ {}
)を挿入しようとすると、常に非連想空の配列(list
/ []
)として挿入されます。連想配列を強制できますか?
例:
$m = new Mongo('mongodb://localhost:27017');
$db = $m->selectDB('test');
$collection = $db->selectCollection('test');
// 1: inserts []
$d = array( 'x' => array() );
$collection->insert($d);
// 2: inserts []
$d = array( 'y' => array('a'=>'123') );
unset($d['y']['a']);
$collection->insert($d);
// 3: inserts {}
$d = array( 'z' => array('a'=>'123') );
$collection->insert($d);
$collection->update(array('_id' => $d['_id']), array('$unset' => array('z.a'=>true)));
そして結果:
> db.test.find().pretty()
{ "_id" : ObjectId("510fb9ede695c5381a000000"), "x" : [ ] }
{ "_id" : ObjectId("510fb9ede695c5381a000001"), "y" : [ ] }
{ "_id" : ObjectId("510fb9ede695c5381a000002"), "z" : { } }
3番目の方法は私が望むことを行いますが、それは少し厄介で、2つのクエリが必要です。より良い解決策はありますか?