簡體   English   中英

mongodb 如何只找到數組的一部分

[英]mongodb How to find only part of an array

我想在下面的數據中得到一個使用“find”函數返回的數組,該數組的內容如下。

{qty:15 warehouse:C},
{qty:20 warehouse:C},
{qty:25 warehouse:C}

我不想要“第一個元素”
我想返回一個 gty 大於 20 的數組。
我怎樣才能做到這一點?

接收mongodb返回的文檔
我必須直接用一個環把它拉出來嗎?
有沒有辦法通過查詢來解決它?


{
    _id: ObjectId('60d0b364737d829c870b7571'),
    item: 'journal',
    instock: [
        {
            warehouse: 'A',
            qty: 5
        },
        {
            warehouse: 'C',
            qty: 15
        },
        {
            warehouse: 'C',
            qty: 20
        },
        {
            warehouse: 'C',
            qty: 25
        }
    ]
}

您可以使用聚合管道:

  • $match匹配您要查詢的所有文檔
  • $project選擇要返回的字段
  • $filter按某種條件過濾instock數組
db.collection.aggregate([
  {
    "$match": {
      "_id": "id_1"
    }
  },
  {
    "$project": {
      "item": 1,
      "instock": {
        "$filter": {
          "input": "$instock",
          "cond": {
            "$gt": [
              "$$this.qty",
              20
            ]
          }
        }
      }
    }
  }
])

這是一個工作示例: https : //mongoplayground.net/p/-RPGEriBxui

暫無
暫無

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

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