如何制作适用于所有这些的Mongo $查询?

时间:2013-05-28 23:05:08

标签: php mongodb

下面的查询找到一个文件:

"tags" : [ { "a" : "a" } ]

但不是:

"tags" : [ { "a" : "a", "b" : "b" } ]

为什么不呢?

以下是查询:

$tag = "a";
$query['tags'] = array(
    '$in' => array(
        array(
            $tag => $tag
        )
    )
);

1 个答案:

答案 0 :(得分:0)

@nadirsaghar

实际上,以下工作正常

db.inventory.insert({tags: [ {'a':'a'}, {'b': 'b'}] });
db.inventory.find({tags: {$in: [ {'a': 'a'}]}});

在该结构上执行查询,

{ tags: { $in: ["a", "b"] } } 

会失败。

更好的是,用于$ in的查询结构必须与搜索的内容相匹配。如果标签是单个元素的数组,如[“a”,“b”],则$ in查询还必须搜索单个元素。如果搜索对象,查询中的对象将需要匹配数组中的对象。

这假设他的初始标签是拼写错误,应该阅读

"tags" : [ { "a" : "a"}, {"b" : "b" } ]