mongodb 如何显示包含所有查询元素的所有行,而不考虑它们的位置?

vq8itlhq  于 2023-01-25  发布在  Go
关注(0)|答案(1)|浏览(112)

我有条目:

[
  {
    text: "Le Paul Vens, 123123"
  },
  {
    text: "Vens Paul Le, 123123"
  },
  {
    text: "Vens Le Paul, 123123"
  },
  {
    text: "Denis Melnik"
  }
]

我的请求如下所示:

query = {"$text": {"$search": "\"Le Paul Vens\""}}

它输出短语出现的所有条目:

Le Paul Vens

但我需要显示短语Le Paul Vens出现的所有行,而不管每个单词的位置。
我该如何提出请求?

yv5phkfx

yv5phkfx1#

搜索3个单独的子字符串可能更简单。

db.collection.aggregate([
  {
    $match: {
      $expr: {
        $and: [
          {
            $ne: [
              -1,
              {
                "$indexOfCP": [
                  "$text",
                  "Le"
                ]
              }
            ]
          },
          {
            $ne: [
              -1,
              {
                "$indexOfCP": [
                  "$text",
                  "Paul"
                ]
              }
            ]
          },
          {
            $ne: [
              -1,
              {
                "$indexOfCP": [
                  "$text",
                  "Vens"
                ]
              }
            ]
          }
        ]
      }
    }
  }
])

Mongo Playground

相关问题