You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Portal对MongoDB集合筛选嵌套数组中SystemServerId等于指定值的文档

MongoDB集合筛选正确写法

基础筛选(仅筛选符合条件的文档,不对返回数组做裁剪)

直接在Azure Portal的查询筛选框中填入以下条件即可:

{
  "Events.SystemTracer.UsersServers.SystemServerId": 125104
}

说明

  • 该写法会匹配所有满足「任意Events数组元素下的SystemTracer.UsersServers数组中存在SystemServerId等于125104」的文档,不需要调用聚合即可实现需求。
  • 之前的写法错误原因:直接传入嵌套对象作为筛选条件时,MongoDB会执行严格全匹配,要求数组元素的结构、字段顺序、值都和你写的对象完全一致,不会做嵌套字段的匹配,因此无法命中结果。

进阶筛选(同时裁剪返回结果中的数组,仅保留符合条件的元素)

如果需要返回结果中只保留符合条件的Events元素,使用如下聚合管道:

[
  {
    "$match": {
      "Events.SystemTracer.UsersServers.SystemServerId": 125104
    }
  },
  {
    "$addFields": {
      "Events": {
        "$filter": {
          "input": "$Events",
          "as": "event",
          "cond": {
            "$in": [
              125104,
              "$$event.SystemTracer.UsersServers.SystemServerId"
            ]
          }
        }
      }
    }
  }
]

说明

  • 第一步$match先筛选出所有符合条件的文档,减少后续计算量
  • 第二步$addFields对Events数组做过滤,只保留包含目标SystemServerId的元素

内容的提问来源于stack exchange,提问作者Carlos Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:54:04