【发布时间】:2016-04-15 10:38:38
【问题描述】:
我正在尝试编写一个简单的 Mongo 查询来返回字段值为 null 的所有文档(或一个空数组,我不确定你怎么称呼它)。
这是我的查询;
db.getCollection('contact').find({'poco.name.email':false})
这是我使用 RoboMongo 收集的截图;
最终,我需要将其转移到一些 PHP 中。到目前为止,我已经完成了这项工作;
$conditions = array_merge($conditions, [
'owner.$id' => $this->getId(),
'poco.name.familyName' => "Smith",
//not sure what goes here.. something like
//'poco.emails' => null,
]);
return Model_Mongo_Contact::getContacts($conditions, $sort, $fields, $limit, $skip);
如果没有更多的方法访问权限,这可能会更难回答。或者我可能不是 Mongo 的新手,这可能真的很明显。
【问题讨论】:
-
@Rajesh 虽然
$exists在这里使用是正确的,但有一个特定的用法实际上会检测“两者”一个空数组以及任何不是数组或不存在的东西。成为"poco.email.0": { "$exists": false },您可以在其中查找存在的0索引位置。作为true条件,数组存在且“非空”,因此false自然给出相反的结果。这就是这里给出的一个答案所解释的。
标签: php mongodb mongodb-query