MongoDB:通过匹配输入字符串或输入字符串中的单个单词进行搜索

o0lyfsai  于 2023-06-29  发布在  Go
关注(0)|答案(1)|浏览(148)

我在集合messages中有字段message,例如:

[
  {
   _id: "chrYMAqT8meXpqdrC",
   message: "Hello world. This is mongo"
  },
  {
   _id: "rKu5gf5zL6NaSvZ5Q",
   message: "Hello. This is mongo world"
  },
  {
   _id: "rKu5gf5zL6NaSvZ5Q",
   message: "world. This is mongo Hello"
  }
]

我想搜索message字段包含/Hello world/igmessage字段包含单词Helloword的邮件。最重要的是-必须按照输入字符串的顺序找到单词,因此不能找到集合中的最后一个元素,但必须找到前两个元素。我知道如何通过正则表达式匹配来查找,但在第二种情况下,我不知道如何执行

mwkjh3gx

mwkjh3gx1#

你可以在正则表达式Hello.*world中使用$regexthis

db.collection.find({
  message: {
    $regex: "Hello.*world",
    $options: "i"
  }
})

playground
也可以使用$regexMatch

db.collection.find({
  $expr: {
    $regexMatch: {
      input: "$message",
      regex: "Hello.*world",
      options: "i"
    }
  }
})
])

options: "i"表示不区分大小写。如果你不想要就把它拿掉
playground

相关问题