我想从一个集合中查找文档,例如类别' 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动物,我还想确保,当我使用数组查询时,不会有任何重复项。
即。我想查询cats
和has_claws
我认为使用$in
就足够了
$query = array('category' => array('$in' => array('cat', 'has_claws')));
$animals = $animalModel->find($query);
是否有本机功能,
答案 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);