Php mongo找到给定数组的匹配文档

时间:2016-04-07 06:21:36

标签: php mongodb mongodb-query

我想从一个集合中查找文档,例如类别' cat'

[{id: 0, name: 'cheetah', category: ['cat', 'has_claws']},
 {id: 1, name: 'lion', category: ['cat', 'has_claws', 'alpha']},
 {id: 2, name: 'fox', category: ['dog']},
 {id: 3, name: 'eagle' category: ['bird', 'has_claws']}
]

查询应该是什么样的?例如,我想查询类别has_claws中的allo动物,我还想确保,当我使用数组查询时,不会有任何重复项。

即。我想查询catshas_claws

中的动物

我认为使用$in就足够了

$query   = array('category' => array('$in' => array('cat', 'has_claws')));
$animals = $animalModel->find($query);

是否有本机功能,

3 个答案:

答案 0 :(得分:1)

看起来你想要$all

$query   = array('category' => array('$all' => array('cat', 'has_claws')));
$animals = $animalModel->find($query);

这意味着该字段必须具有"两者"值是一个匹配。 $in运算符代替"或者#34;值可以匹配,所以"三"你的文件,而不是"两个" $all会匹配。

您也在问题中错误地命名了该字段。已在此处更正为"category"

答案 1 :(得分:0)

您的查询应该是: -

db.collection.find( { category: { $in: [ 'cat', 'has_claws' ] } } )

答案 2 :(得分:0)

如果您想查询所有具有类别cat和has_claws但没有重复的动物,您可以使用不同的功能。

$ query = array(' name',array(' category' => array(' $ in' => array('猫',' has_claws')); $ result = $ collection-> distinct($ query);