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 find() 在匹配(字段,值)时返回子文档