mongodb查询动态键

发布于 2025-01-22 02:25:32 字数 393 浏览 0 评论 0原文

需要找到具有不同值和键的引用,应从1或2或3开始。请您提供帮助。

{
 "quoteId": 1,
 "screening": {
    "101": 1,
    "201": 1,
    "301": 1,
    "100": 1,
    "200": 1,
    "300": 1,
    "111": 1,
    "211": 1,
    "311": 1
  }
}

{
 "quoteId": 2,
 "screening": {
    "101": 1,
    "201": 1,
    "301": 1,
    "100": 1,
    "200": 1,
    "300": 1,
    "111": 1,
    "211": 2,
    "311": 1
  }
}

Need to find quoteIds where having different values and keys should start with 1 or 2 or 3. Could you please help.

{
 "quoteId": 1,
 "screening": {
    "101": 1,
    "201": 1,
    "301": 1,
    "100": 1,
    "200": 1,
    "300": 1,
    "111": 1,
    "211": 1,
    "311": 1
  }
}

{
 "quoteId": 2,
 "screening": {
    "101": 1,
    "201": 1,
    "301": 1,
    "100": 1,
    "200": 1,
    "300": 1,
    "111": 1,
    "211": 2,
    "311": 1
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初熏 2025-01-29 02:25:32
  1. $ set - 创建筛选数组字段,通过将对象(键值配对)转换为多个文档(通过$ $ objecttoArray)和通过$ filter的1或2或3的开始来实现正则

  2. $ match - 筛选不是空数组的过滤文档。

  3. $ unset - 删除筛选字段。

db.collection.aggregate([
  {
    $set: {
      screenings: {
        $filter: {
          input: {
            "$objectToArray": "$screening"
          },
          cond: {
            "$regexMatch": {
              input: "$this.k",
              regex: "^(1|2|3)"
            }
          }
        }
      }
    }
  },
  {
    $match: {
      screenings: {
        $ne: []
      }
    }
  },
  {
    $unset: "screenings"
  }
])

示例mongo playground

  1. $set - Create screenings array field, by converting object (key-value pair) to multiple documents (via $objectToArray) and fulfill the regex with starting of 1 or 2 or 3 in $filter.

  2. $match - Filter documents that screenings is not an empty array.

  3. $unset - Remove screenings field.

db.collection.aggregate([
  {
    $set: {
      screenings: {
        $filter: {
          input: {
            "$objectToArray": "$screening"
          },
          cond: {
            "$regexMatch": {
              input: "$this.k",
              regex: "^(1|2|3)"
            }
          }
        }
      }
    }
  },
  {
    $match: {
      screenings: {
        $ne: []
      }
    }
  },
  {
    $unset: "screenings"
  }
])

Sample Mongo Playground

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文