MongoDB:匹配字符串字段中的多个值

Posted

技术标签:

【中文标题】MongoDB:匹配字符串字段中的多个值【英文标题】:MongoDB: Match multiple values in string field 【发布时间】:2021-04-17 04:52:57 【问题描述】:

我有一个包含字符串字段的实体集合。我正在寻找一种方法来查询具有组合数量的值的集合,并使用以下规范获取包含所有这些值的所有实体:

    包含所有提供的查询值,而不仅仅是其中的一部分 不区分大小写 无论顺序如何 'word' 查询值可以是更大内容的一部分(例如,由 _ 或任何其他字符分隔)

例如,如果我提供这些词作为查询值:i am spiderman (我可以用空格分隔它们,给一个数组,或者其他任何可行的方法..)

我期待这些结果:

 - "i am_spiderMan"                     // should match
 - "AM i spiderman?!"                   // should match
 - "who am I? supermanspiderman"        // should match
 - "I am superman"                      // should not match
 - "i am spider_man"                    // should not match

我希望这涵盖了我试图描述的所有案例。 我尝试了正则表达式,也对类似问题进行了一些研究,但无法使其正常工作。

【问题讨论】:

看起来您正在寻找创建一个正则表达式,但不知道从哪里开始。请查看Reference - What does this regex mean 资源,它有很多提示。此外,请参阅 Learning Regular Expressions 帖子了解一些基本的正则表达式信息。一旦您准备好表达方式,但解决方案仍然存在问题,请使用最新的详细信息编辑问题,我们很乐意帮助您解决问题。 【参考方案1】:

你可以使用正则表达式。这是完美的工作。当您通过句子时,您需要将所有世界放入数组中,如下所示。请参阅 $all 以包含所有要查找的单词。 Reg expr case insensitive

db.collection.find ( key:  $all: [ /spiderman/i, /i/i, /am/i ]  )

【讨论】:

以上是关于MongoDB:匹配字符串字段中的多个值的主要内容,如果未能解决你的问题,请参考以下文章

mongoDB中的字符串字段值长度

MongoDB返回指定字段的方法

MongoDB 索引和非索引性能

MongoDB find() 在匹配(字段,值)时返回子文档

MongoDB find() 在匹配(字段,值)时返回子文档

MongoDB如何将数组中的字段类型从字符串更改为数组并保持原始值