-1

假设我们有以下 MongoDB 集合:

{id:1, data:"some_data"}
{id:2, data:"some_data"}
{id:3, data:"some_data"}
{id:4, data:"some_data"}

我还有一个 php-array 元素“6”不在集合中

 $q = [1,3,6];

如果我这样查询集合:

 $cursor = $db->col->find(['id' => ['$in' => $q]]);

我正在获取 ID 为 1 和 3 的文档

但是我想要一个空结果,因为集合中不存在 id 6,我怎样才能完全匹配集合?

我可以只用一个查询来做到这一点吗?

4

2 回答 2

0

你不能只用一个 mongodb 查询来做到这一点,因为它没有这样的功能。

我也不明白你为什么需要这个,你可以这样做:

$q = [1,3,6];
$res = array();
$cursor = $db->col->find(['id' => ['$in' => $q]]);
foreach($cursor as $val){
  $res[$val['id']] = $val['data'];
}

foreach($q as $val){
 if (!isset($res[$val])) $res[$val] = ''; // to show that there is nothing in the results.
}

PS我没有尝试过这段代码,所以可能会有错误。

于 2013-11-03T03:01:28.547 回答
0

如果id是唯一的:

var result = db.col.find({id:{$in:q}});
if(result.count() == q.length) {
    //handle result
} else {
    //handle empty result
}
于 2013-11-03T02:00:53.967 回答