使用Array进行MongoDB正则表达式搜索

Ayyappa A

我正在寻找一种逻辑来从1000多个记录中检索数据库中的数据。我不能在应用程序级别。

我的数据以两个双字母结尾,例如“ ll,gg,ss,ff ...”。想要从数据库中检索以上述双字符结尾的单词。

我的样本数据库:

  [{
     "word": "Floss"
   }, {
    "word": "smacx"
   }, {
   "word": "fuzz"
   }, {
    "word": "grass"
   }, {
    "word": "dress"
   }, {
    "word": "puff"
   }, {
    "word": "cliff"
   }, {
    "word": "sniff"
   }, {
    "word": "chess"
   }, {
    "word": "kiss"
   }, {
    "word": "fell"
   }, {
    "word": "shell"
  }]

checkarray = ['ll','gg','ll','ss'];

关于如何作为数据库级别执行此操作的任何想法。由于具有近10万条记录,因此应用程序级循环的效率很高,并且花费更多时间。

克列丹

您可以通过创建一个新的RegExp对象数组来将$ in与正则表达式结合使用,如下所示:$in

var checkarray = ['ll','gg','ll','ss'],
    regex = checkarray.map(function (k) { return new RegExp(k); });
db.collection.find({
    "word": { "$in": regex } 
})

请记住,使用$in较小的数组可能会非常有效,但使用庞大的列表则不会那么有效,因为它会在索引中跳过以查找匹配的文档,或者在没有索引的情况下遍历整个集合。


除了将$ in与正则表达式一起使用,您还可以将$regex运算符与包含checkarray的管道分隔正则表达式模式一起使用,如下所示:

var checkarray = ['ll','gg','ll','ss'],
    regex = checkarray.join("|");
db.collection.find({
    "word": {
        "$regex": regex, 
        "$options": "i"
    } 
})

要匹配最后两个字符,请使用以下模式\gg$\,即追加$$元字符表示字符串结尾的模式例如,该模式abc$可以匹配以下abc, endsinabc, 123abc, ...

所以,对于您的后续问题

我需要以checkArray字母结尾的单词,而不是中间或开头的单词。CheckArray字符应在字符串的结尾字母中。像“ EGG”而不是“ FILLED”

您可以这样处理:

var checkarray = ['ll','gg','ff','ss'],
    regex = checkarray.map(function (k) { return new RegExp(k+'$'); });
db.collection.find({
    "word": { "$in": regex } 
})

要对此进行测试,请填充以下样本文档以测试集合:

db.test.insert([
    { "_id": 1, "word" : "well" },
    { "_id": 2, "word" : "filled" },
    { "_id": 3, "word" : "glass" },
    { "_id": 4, "word" : "blessed" }
])

上面的查询将返回带有_ids 1和3的文档

{ "_id" : 1, "word" : "well" }
{ "_id" : 3, "word" : "glass" }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Array进行MongoDB正则表达式搜索

来自分类Dev

Loggly。使用正则表达式进行搜索

来自分类Dev

使用正则表达式进行基于条件的搜索

来自分类Dev

使用正则表达式进行交替搜索

来自分类Dev

如何使用否定搜索进行正则表达式?

来自分类Dev

使用正则表达式搜索mongodb _id字段

来自分类Dev

MongoDB使用正则表达式搜索字段的开始

来自分类Dev

如何根据正则表达式匹配数对mongodb正则表达式搜索查询结果进行排序

来自分类Dev

我在 mongoDb 中的搜索查询在使用正则表达式进行搜索时返回一个空列表

来自分类Dev

在命令内进行正则表达式搜索

来自分类Dev

用正则表达式进行grep搜索

来自分类Dev

mongodb正则表达式在流星中搜索问题

来自分类Dev

C ++使用正则表达式搜索“正则表达式运算符”

来自分类Dev

在Python中使用正则表达式进行搜索和替换

来自分类Dev

将使用以“ $”结尾的正则表达式进行优化的向后搜索

来自分类Dev

使用PyMongo进行单词边界正则表达式搜索

来自分类Dev

使用正则表达式在JavaScript中进行全字搜索

来自分类Dev

在多列中使用正则表达式进行搜索

来自分类Dev

在编码的用户界面中使用正则表达式进行搜索

来自分类Dev

在PHP中使用正则表达式在数组中进行通配符搜索

来自分类Dev

在和Mysql中使用分隔符进行正则表达式搜索

来自分类Dev

使用Windows Grep在文本文件中进行正则表达式搜索

来自分类Dev

如何使用每行仅返回一个结果的正则表达式进行搜索

来自分类Dev

在记事本++中使用正则表达式,进行搜索

来自分类Dev

使用一个正则表达式进行搜索和修改

来自分类Dev

是否可以使用 Symfony Dom 爬虫通过正则表达式进行搜索?

来自分类Dev

使用正则表达式正则表达式对值进行分组

来自分类Dev

在MongoDB中将正则表达式与文本搜索一起使用

来自分类Dev

在MongoDB中将正则表达式与文本搜索一起使用

Related 相关文章

  1. 1

    使用Array进行MongoDB正则表达式搜索

  2. 2

    Loggly。使用正则表达式进行搜索

  3. 3

    使用正则表达式进行基于条件的搜索

  4. 4

    使用正则表达式进行交替搜索

  5. 5

    如何使用否定搜索进行正则表达式?

  6. 6

    使用正则表达式搜索mongodb _id字段

  7. 7

    MongoDB使用正则表达式搜索字段的开始

  8. 8

    如何根据正则表达式匹配数对mongodb正则表达式搜索查询结果进行排序

  9. 9

    我在 mongoDb 中的搜索查询在使用正则表达式进行搜索时返回一个空列表

  10. 10

    在命令内进行正则表达式搜索

  11. 11

    用正则表达式进行grep搜索

  12. 12

    mongodb正则表达式在流星中搜索问题

  13. 13

    C ++使用正则表达式搜索“正则表达式运算符”

  14. 14

    在Python中使用正则表达式进行搜索和替换

  15. 15

    将使用以“ $”结尾的正则表达式进行优化的向后搜索

  16. 16

    使用PyMongo进行单词边界正则表达式搜索

  17. 17

    使用正则表达式在JavaScript中进行全字搜索

  18. 18

    在多列中使用正则表达式进行搜索

  19. 19

    在编码的用户界面中使用正则表达式进行搜索

  20. 20

    在PHP中使用正则表达式在数组中进行通配符搜索

  21. 21

    在和Mysql中使用分隔符进行正则表达式搜索

  22. 22

    使用Windows Grep在文本文件中进行正则表达式搜索

  23. 23

    如何使用每行仅返回一个结果的正则表达式进行搜索

  24. 24

    在记事本++中使用正则表达式,进行搜索

  25. 25

    使用一个正则表达式进行搜索和修改

  26. 26

    是否可以使用 Symfony Dom 爬虫通过正则表达式进行搜索?

  27. 27

    使用正则表达式正则表达式对值进行分组

  28. 28

    在MongoDB中将正则表达式与文本搜索一起使用

  29. 29

    在MongoDB中将正则表达式与文本搜索一起使用

热门标签

归档