首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查询MongoDB中的复杂数据

如何查询MongoDB中的复杂数据
EN

Stack Overflow用户
提问于 2020-10-07 15:39:48
回答 3查看 36关注 0票数 0

我有一张表结构如下:

db.l2vpn_fdb_database.findOne()

代码语言:javascript
复制
{
  _id: ObjectId("5f5257f11324c04122714445"),
  hostname: "spine01-drt-red",
  l2vpn_fdb_database: {
    MAC: [
      {
        IfIndex: "1631",
        MacAddr: "00-00-0C-07-AC-01",
        SrvID: "1",
        VsiName: "EVPN",
      },
      {
        IfIndex: "0",
        MacAddr: "00-00-0C-07-AC-02",
        SrvID: "0",
        VsiName: "EVPN",
      },
      {
        IfIndex: "1631",
        MacAddr: "00-00-0C-07-AC-0A",
        SrvID: "1",
        VsiName: "EVPN",
      },
    ],
  },
}

我想搜索"MacAddr“对象,您能帮我根据上面的内容找出答案吗?因此,从本质上说,我希望能够解析MacAddress的数据库,前提是它在那里,并且能够获得"IfIndex“以供进一步处理。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2020-10-07 16:20:52

您可以使用$filter获取匹配的对象。

代码语言:javascript
复制
db.collection.aggregate([
  {
    $project: {
      l2vpn_fdb_database: {
        $filter: {
          input: "$l2vpn_fdb_database.MAC",
          cond: {
            $eq: [
              "$$this.IfIndex",
              "1631"
            ]
          }
        }
      }
    }
  }
])

Working 蒙戈游乐场

票数 0
EN

Stack Overflow用户

发布于 2020-10-08 04:35:20

对于macAddr的主机名,请这样做,

代码语言:javascript
复制
db.collection.aggregate([
  {
    $project: {
      l2vpn_fdb_database: {
        $filter: {
          input: "$l2vpn_fdb_database.MAC",
          cond: {
            $eq: [
              "$$this.IfIndex",
              "1631"
            ]
          }
        }
      },
      hostname:{
          $eq:['$hostname','spine01-drt-red']
          }
    }
  }
])
票数 0
EN

Stack Overflow用户

发布于 2020-10-08 05:23:32

这个查询可以帮助您。

代码语言:javascript
复制
b.l2vpn_fdb_database.findOne({
  "l2vpn_fdb_database.MAC.MacAddr": "00-00-0C-07-AC-01",
},
{
  "l2vpn_fdb_database.MAC.$": 1
})

结果是相同的文档,数组中只有一个元素。

结果:

代码语言:javascript
复制
{
    "_id": ObjectId("5f5257f11324c04122714445"),
    "l2vpn_fdb_database": {
      "MAC": [
        {
          "IfIndex": "1631",
          "MacAddr": "00-00-0C-07-AC-01",
          "SrvID": "1",
          "VsiName": "EVPN"
        }
      ]
    }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64247541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档