首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php mongo查找给定数组的匹配文档

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

Stack Overflow用户
提问于 2016-04-07 06:21:36
回答 3查看 76关注 0票数 2

我想从一个集合中找到一些文档,比如一个类别为“cat”的文档。

代码语言:javascript
复制
[{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类别中的所有动物,我还想确保,当我使用数组进行查询时,不会有任何重复。

我想查询catshas_claws中的动物

我想使用$in就足够了

代码语言:javascript
复制
$query   = array('category' => array('$in' => array('cat', 'has_claws')));
$animals = $animalModel->find($query);

有没有本机函数来做这件事,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-07 06:28:38

看来你想要$all

代码语言:javascript
复制
$query   = array('category' => array('$all' => array('cat', 'has_claws')));
$animals = $animalModel->find($query);

这意味着字段必须具有“两个”值才能匹配。相反,$in运算符的意思是“任何一个”的值都可以匹配,因此您的文档中的“三个”与$all匹配的“两个”相反。

而且,在你的问题中,你把字段命名的不正确。这里更正为"category"

票数 1
EN

Stack Overflow用户

发布于 2016-04-07 06:28:31

你的问题应该是:-

代码语言:javascript
复制
db.collection.find( { category: { $in: [ 'cat', 'has_claws' ] } } )
票数 0
EN

Stack Overflow用户

发布于 2016-04-07 06:42:07

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

$query=array(‘名称’,数组(‘分类’=>数组(‘$in’=>数组(‘cat’,‘has_claws’);$result = $collection->distinct($query);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36468163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档