所以,我决定让我的脚受到MongoDB的影响,并且喜欢它。它似乎非常快速和灵活,这是伟大的。但是,我仍然在经历最初的学习曲线,因此,我花了几个小时来挖掘最基本的东西。
我在整个MongoDB在线文档中进行搜索,花了几个小时浏览页面,没有提到这一点。我知道Mongo还是很新的(v1.x)所以它解释了为什么还没有太多的信息。我甚至试图在没有太多运气的情况下在Mongo上寻找书籍。所以,是的,我已经尝试过没有运气的RTM,所以,现在我转向你。
我有一个嵌套在每个文档中的各种Hashtags数组(即:#apples,#orange,#Apple,#APPLES),我想执行一个不区分大小写的find()来访问包含apple的所有文档任何情况。似乎find确实用/ i支持一些正则表达式,但我似乎无法使其工作。
无论如何,我希望这是对某人的快速回答。
这是我在PHP中的现有调用,区分大小写:
$cursor = $collection->find(array( "hashtags" => array("#".$keyword)))->sort(array('$natural' => -1))->limit(10);
帮助?
答案 0 :(得分:0)
我怀疑你的查询没有返回你真正想要的东西......
如果你这样做
db.col.find( { some_array_field: ["item1", "item2"] } );
然后仅匹配some_array_field中完全包含这两项的文档。因此,如果有一个带有[item1,item2]主题标签的文档,它将匹配,但带有[item1,item2,item3]标签的文档将不匹配。
您可以使用本帖所述的$ all参数:
How do you do an AND query on an array in mongodb?
e.g。
db.col.find( { some_array_field: { $all : ["item1", "item2"] } } );
或:
db.col.find( { some_array_field: "item1", some_array_field: "item2" } );
完全文档匹配和部分匹配的区别对我来说在MongoDB中确实令人困惑。
答案 1 :(得分: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);
希望这有帮助。