2

所以,我决定用 MongoDB 让我的脚湿透,并且到目前为止喜欢它。它看起来非常快速和灵活,这很棒。但是,我仍在经历最初的学习曲线,因此,我会花费数小时来挖掘有关最基本事物的信息。

我搜索了整个 MongoDB 在线文档,并花了几个小时在谷歌上搜索页面,但没有提及这一点。我知道 Mongo 仍然很新(v1.x),所以它解释了为什么还没有太多信息。我什至尝试在没有太多运气的情况下寻找有关 Mongo 的书籍。所以是的,我试过 RTM 没有运气,所以,现在我求助于你。

我有一个嵌套在每个文档中的各种 Hashtags 数组(即:#apples、#oranges、#Apples、#APPLES),并且我想执行不区分大小写的 find() 以在任何情况下访问所有包含苹果的文档。似乎 find 确实支持一些带有 /i 的正则表达式,但我似乎也无法让它工作。

无论如何,我希望这对某人来说是一个快速的答案。

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

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

帮助?

4

2 回答 2

0

这是一个不区分大小写mongodb的搜索示例php

$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);

希望这对任何人都有帮助。

于 2014-10-27T06:16:11.777 回答
0

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

如果你这样做

db.col.find( { some_array_field: ["item1", "item2"] } );

那么它将匹配在 some_array_field 中完全具有这两个项目的文档。因此,如果存在带有 [item1, item2] 标签的文档,它将匹配,但带有 [item1, item2, item3] 标签的文档将不匹配。

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

如何对 mongodb 中的数组进行 AND 查询?

例如

db.col.find( { some_array_field: { $all : ["item1", "item2"] } } );

或者:

db.col.find( { some_array_field: "item1", some_array_field: "item2" } );

起初,完全文档匹配和部分匹配的这种区别在 MongoDB 中让我很困惑。

于 2010-11-18T15:58:37.350 回答