繁体   English   中英

MongoDB 罗盘:阵列 object 上的过滤器查询不起作用

[英]MongoDB Compass: Filter query on array object is not working

我想根据提供的值过滤数组 object 。 我在过滤器文本框中使用以下查询以及投影。 似乎没有应用过滤器。

我也尝试过,但不幸的是数组没有被过滤

  { MissingPersonIds : {$elemMatch: { PhotoId : '2 - Copy (3).jpg'}} }

在此处输入图像描述

筛选:

{ "MissingPersonIds.PhotoId" : "2 - Copy (3).jpg" }

投影:

{ MissingPersonIds: { $slice: [1,10] }}

架构是:

[{
  "_id": {
    "$oid": "61ada7da9a30fd8471869bbc"
  },
  "ImportKeyId": 5843,
  "MissingPersonIds": [
    {
      "PhotoId": "2 - Copy.jpg",
      "Description": "Account ID not found"
    },
    {
      "PhotoId": "2 - Copy (2).jpg",
      "Description": "Account ID not found"
    },
    {
      "PhotoId": "2 - Copy (3).jpg",
      "Description": "Account ID not found"
    },
    {
      "PhotoId": "2 - Copy - Copy.jpg",
      "Description": "Account ID not found"
    },
    {
      "PhotoId": "2 - Copy - Copy (2).jpg",
      "Description": "Account ID not found"
    }
  ]
}]

我期待的 output 是:

[{
  "_id": {
    "$oid": "61ada7da9a30fd8471869bbc"
  },
  "ImportKeyId": 5843,
  "MissingPersonIds": [
    {
      "PhotoId": "2 - Copy (3).jpg",
      "Description": "Account ID not found"
    }
  ]
}]

您需要在投影中使用$filter来过滤数组中的元素。

db.collection.find({},
{
  "MissingPersonIds": {
    $filter: {
      input: "$MissingPersonIds",
      cond: {
        "$eq": [
          "$$this.PhotoId",
          "2 - Copy (3).jpg"
        ]
      }
    }
  }
})

示例 Mongo Playground

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM