查询MongoDb中的嵌套布尔字段

3htmauhk  于 2023-01-04  发布在  Go
关注(0)|答案(1)|浏览(106)

我有下面的mongoclient查询:

db = db.getSiblingDB("test-db");
hosts = db.getCollection("test-collection")
db.hosts.aggregate([
    {$match: {"ip_str": {$in: ["52.217.105.116"]}}}
]);

它输出以下内容:

{
    "_id" : ObjectId("..."),
    "ip_str" : "52.217.105.116",
    "data" : [
        {"ssl" : {"cert" : {"expired" : "False"}}}
    ]
}

我尝试构建查询,使其根据ssl.cert.expired字段的值返回布尔值True或False。虽然我不太确定如何实现。我已经研究了$lookup和$where操作符,但还不太熟悉在mongo中查询嵌套对象。

6rvt4ljy

6rvt4ljy1#

由于data是一个数组,为了获得嵌套expired的(第一个)元素,您应该使用$arrayElemAt并提供索引0来指示第一个元素。

{
  $project: {
    ip_str: 1,
    expired: {
      $arrayElemAt: [
        "$data.ssl.cert.expired",
        0
      ]
    }
  }
}

Demo @ Mongo Playgound

相关问题