如何找到在MongoDB中字段的子串(How to find a substring in a fi

2019-07-29 01:43发布

我如何才能找到与其中对象的字段包含的子数据库中的所有对象?

如果字段是与一个字符串值的集合对象:

我想找到的分贝“数据库”,其中A包含一个子说“ABC DEF”的所有对象。

我试过了:

db.database.find({A: {$regex: '/^*(abc def)*$/''}})

但没有奏效

UPDATE

一个真正的字符串(Unicode格式):

Sujet  Commentaire sur  Star Wars  Episode III - La Revanche des Sith 1

需要寻找与星球大战中的所有条目

db.test.find({A: {$regex: '^*(star wars)*$''}}) not wokring

Answer 1:

取而代之的是:

db.database.find({A: {$regex: '/^*(abc def)*$/''}})

你应该做这个:

db.database.find({A: /abc def/i })

^ *实际上不是有效的语法^和$是锚,而不是东西是重复的。 你可能是指^ *在这里。 但是没有必要^ *为仅仅意味着“一切行动后的字符”和(ABC DEF)*表示“零次或多次‘ABC DEF’,但它必须是在字符串的结束,因为你的$的。“我”在结尾是使其不区分大小写。



Answer 2:

只要使用字符串“星球大战”和$regex将做休息

db.test.find({A: {$regex: 'Star Wars'}})


Answer 3:

$regex太贵/慢的大集合。

我建议利用聚合框架和$ indexOfCP 。

db.test.aggregate([{$match: 
    {$expr: { $gt: [{ $indexOfCP: [ "$A", "Star Wars" ] }, -1]}}
    }, {$project: {A:1}}])

对于不区分大小写的搜索您可以添加$toUpper进来并搜索STAR WARS



文章来源: How to find a substring in a field in Mongodb
标签: mongodb nosql