簡體   English   中英

MongoDB 查詢特定 object 的嵌套數組

[英]MongoDB query for nested array of specific object

我是 mongodb 的新用戶,這就是我問這個問題的原因。 我有一份文件,在這份文件中,我在一個 _id 下有 3 個對象。

當我過濾{ "people.age": { $in: [24] } }時,我正在獲取完整的文檔。 但我只想看到匹配的 object。比如 24 歲,我只想看到 object 2,而不是 object 0 和 1。

是否可以只顯示匹配的 object? 如果你好心解釋我這將對我有所幫助。

在此處輸入圖像描述

使用$進行投影。

查詢 1

db.collection.find({
  "people.age": {
    $in: [
      24
    ]
  }
},
{
  "people.$": 1
})

示例 Mongo 游樂場(查詢 1)

如果您只是按特定年齡搜索人,您也可以使用以下查詢:

查詢 2

db.collection.find({
  "people.age": 24
},
{
  "people.$": 1
})

示例 Mongo 游樂場(查詢 2)

注意: $將只返回數組的第一個元素。


您可以將聚合查詢查找為:

  1. $match - 按age過濾文檔。
  2. $project - 裝飾 output 個文檔。 使用$filter運算符過濾people數組中的文檔。
db.collection.aggregate([
  {
    $match: {
      "people.age": 24
    }
  },
  {
    $project: {
      "people": {
        $filter: {
          input: "$people",
          cond: {
            $eq: [
              "$$this.age",
              24
            ]
          }
        }
      }
    }
  }
])

示例 Mongo 游樂場(聚合管道)


參考

返回數組中的項目特定數組元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM