簡體   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