Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否对MongoDB中的数组执行不区分大小写的查找?_Php_Mongodb_Case Insensitive_Nosql - Fatal编程技术网

Php 是否对MongoDB中的数组执行不区分大小写的查找?

Php 是否对MongoDB中的数组执行不区分大小写的查找?,php,mongodb,case-insensitive,nosql,Php,Mongodb,Case Insensitive,Nosql,所以,我决定用MongoDB打湿我的脚,并且到目前为止我很喜欢它。它似乎非常快速和灵活,这是伟大的。但是,我仍在经历最初的学习过程,因此,我花了数小时挖掘最基本的信息 我搜索了整个MongoDB在线文档,花了几个小时在页面上搜索,没有提到这一点。我知道Mongo仍然很新(v1.x),所以它解释了为什么还没有太多信息。我甚至一直在寻找关于Mongo的书,但运气不好。是的,我试过RTM,但运气不好,所以,现在我转向你 我在每个文档(即:#apples,#oranges,#apples,#apples

所以,我决定用MongoDB打湿我的脚,并且到目前为止我很喜欢它。它似乎非常快速和灵活,这是伟大的。但是,我仍在经历最初的学习过程,因此,我花了数小时挖掘最基本的信息

我搜索了整个MongoDB在线文档,花了几个小时在页面上搜索,没有提到这一点。我知道Mongo仍然很新(v1.x),所以它解释了为什么还没有太多信息。我甚至一直在寻找关于Mongo的书,但运气不好。是的,我试过RTM,但运气不好,所以,现在我转向你

我在每个文档(即:#apples,#oranges,#apples,#apples,#apples)中嵌套了一系列不同的hashtag,我想执行一个不区分大小写的find()来访问任何情况下包含苹果的所有文档。find似乎确实支持一些带有/i的正则表达式,但我似乎也无法实现这一点

不管怎样,我希望这对某人来说是一个快速的答案

下面是我在PHP中的现有调用,它区分大小写:

$cursor = $collection->find(array( "hashtags" => array("#".$keyword)))->sort(array('$natural' => -1))->limit(10);

帮助?

我怀疑您的查询没有返回您真正想要的

如果你这样做

db.col.find( { some_array_field: ["item1", "item2"] } );
然后它将只匹配在某个数组字段中正好包含这两个项的文档。因此,如果有一个带有[item1,item2]标签的文档,它将匹配,但是带有[item1,item2,item3]标签的文档将不匹配

您可以使用本文中描述的$all参数:

e、 g

或:


一开始,在MongoDB中,完全文档匹配和部分匹配的区别让我很困惑。

我怀疑您的查询没有返回您真正想要的内容

如果你这样做

db.col.find( { some_array_field: ["item1", "item2"] } );
然后它将只匹配在某个数组字段中正好包含这两个项的文档。因此,如果有一个带有[item1,item2]标签的文档,它将匹配,但是带有[item1,item2,item3]标签的文档将不匹配

您可以使用本文中描述的$all参数:

e、 g

或:


一开始,在MongoDB中,完全文档匹配和部分匹配的区别确实让我感到困惑。

这里是一个使用
php在
MongoDB
中进行不区分大小写搜索的示例

$search_string='baR';

$searchQuery = array(
            '$or' => array(
                array(
                    'field1' => new MongoRegex("/^$search_string/i"),
                    ),
                array(
                    'field2' => new MongoRegex("/^$search_string/i"),
                    ),
                )
            );

$cursor = $customers->find($searchQuery);

希望这能有所帮助。

下面是一个使用
php
mongodb
中搜索不区分大小写的示例

$search_string='baR';

$searchQuery = array(
            '$or' => array(
                array(
                    'field1' => new MongoRegex("/^$search_string/i"),
                    ),
                array(
                    'field2' => new MongoRegex("/^$search_string/i"),
                    ),
                )
            );

$cursor = $customers->find($searchQuery);

希望这能有所帮助。

我想你的意思是:
newmongoregex(“/^search\u string$/I”)
,不是吗?
MongoRegex
已经因为
MongoDB\BSON\Regex
而被弃用,所以现在你应该做
newmongodb\BSON\Regex(“^$search\u string\$”,“/I”)
用于对变量
$search\u string
进行不区分大小写的查找。我想您的意思是:
新建MongoRegex(“/^search\u string$/I”)
,不是吗?
MongoRegex
已被弃用于
MongoDB\BSON\Regex
,所以现在您应该使用
新建MongoDB\BSON\Regex(“^$search\u string\”,“/I”)
用于变量
$search\u string
的不区分大小写的查找。