如何从PHP中将空关联数组({})写入MongoDB
发布时间:2020-12-13 21:46:47 所属栏目:PHP教程 来源:网络整理
导读:当我尝试从 PHP向MongoDB插入空关联数组(hashmap / dictionary / dict / {})时,它总是作为非关联空数组(list / [])插入.我可以强制关联数组吗? 例: $m = new Mongo('mongodb://localhost:27017');$db = $m-selectDB('test');$collection = $db-selectColle
当我尝试从
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" : { } } 第三种方式做我想要的,但它有点尴尬,需要两个查询.有更好的解决方案吗? 解决方法
无论您存储空对象还是数组,有什么区别?在BSON,arrays and objects are stored the same way,as a dict.无论如何,对你的问题.
对于PHP MongoDB驱动程序,空数组就是一个空数组,因此它将其存储为数组.向数组添加键/值对时,驱动程序理解它应该存储对象. 如果您确实要存储空对象,请尝试: $d = new stdClass(); $collection->insert(array('z' => $d)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |