无法根据 Mongodb 中的布尔值获取数据

unable to fetch data based on boolean value in Mongodb

我在 mongo 中有 JSON 数据,我只想从数组中获取 activeInd=true 的域。 下面是我在数据库中的示例数据。

{
    "organizationId" : 339975,
    "domains" : [
        {       
        "application" : "ABC",
         "activeInd": true,
         "subdomain":["URL1","url2"]
         },
        {       
        "application" : "mno",
         "activeInd": false,
         "subdomain":["URL3","url4"]
         },
        {       
        "application" : "pqr",
         "activeInd": false,
         "subdomain":["URL","url6"]
         },
        {       
        "application" : "egh",
         "activeInd": true,
         "subdomain":["URL11","url16"]
         }]
}

而且我已经尝试了如下的一些解决方案

db.collectionName.aggregate([{$project: {organizationId: {$eq: ["$organizationId", 339975]},
domains:{
$filter: {
input: "$domains",
as : "domains",
cond: {$eq: ["$$domains.activeInd", true]}
}
}}
}])

这也是从 organizationId 获取数据,但我的要求是在给定的 organizationId 中,应该在 activeInd=true 的位置获取域 一般来说,我需要如下示例的输出 所需输出

{
    "organizationId" : 339975,
    "domains" : [
        {       
        "application" : "ABC",
         "activeInd": true,
         "subdomain":["URL1","url2"]
         },        
        {       
        "application" : "egh",
         "activeInd": true,
         "subdomain":["URL11","url16"]
         }]
}

有人可以帮我吗

也许 $filter 如下:

test here

 db.collection.aggregate([
   {
    $match: {
      organizationId: 339975
    }
  },
   {
$project: {
  domains: {
    $filter: {
      input: "$domains",
      as: "item",
      cond: {
        $eq: [
          "$$item.activeInd",
          true
             ]
          }
        }
      }
   }
 }
])

解释:

  1. 在匹配阶段,您只获取必要的 organizationId 文档
  2. 在筛选阶段,您只会从域中获取 activeInd 项目