mongo在单词数组中搜索字符串匹配的一部分

时间:2016-07-11 17:23:43

标签: arrays regex string mongodb find

我想在mongodb list元素中找到部分字符串匹配 例如我的搜索字符串是:

“你好世界我们在火星上”

我的记录标签是:

  1. 字:[“hell”,“bubu world”]
  2. 字词:[“我们”,“Cookie”]
  3. 字词:[“是nono mars”,“w”]
  4. 我想只获得第2号记录,其中一个的数组元素匹配

1 个答案:

答案 0 :(得分:2)

这可能不是您正在寻找的确切答案。但是,我已经概述了我的想法,以便您重新考虑要求和可能的解决方案。

您可能需要重新考虑如何设计解决方案。您可能无法在单个Mongo查询中实现预期,因为通常数据库属性将包含更多文本,搜索字符串将具有更少的单词。根据您的问题,您的要求与之相反。

MongoDB中典型文本搜索的一种可能解决方案是" Text"索引和使用" $ text"和" $ search"在找到。

https://docs.mongodb.com/manual/reference/operator/query/text/#op._S_text

创建文字索引: -

db.collectionname.createIndex({words:" text"})

db.words.find( { $text: { $search: "Hello world we are on mars", $caseSensitive: true  } } )

结果将是:1和3

您还可以通过将转义的双引号括起来来执行词组搜索(\")。