簡體   English   中英

計算和更新mongodb中的嵌套數組

[英]Count and Update nested array in mongodb

我是使用mongo db的新手,並且一直在嘗試找出一種在mongo db集合中獲取嵌套數組計數的方法,如下所示。

    {
      city_id: 'C1',
      city_name: "C1Name",
      wards: [{
      ward_id: "W1",
      ward_number: "1",
      areas: [{
      area_id: "a1",
      area_name: "a1Name"
    },
    {
      area_id: "a2",
      area_name: "a2Name"
    }]
  }, 
  {
    ward_id: "W2",
    ward_number: "2",
    areas: [{
      area_id: "a21",
      area_name: "a21Name"
    }, {
      area_id: "a22",
      area_name: "a22Name"
    }]
  }]
},
    {
      city_id: 'C2',
      city_name: "C2Name",
      wards: [{
      ward_id: "W21",
      ward_number: "21",
      areas: [{
        area_id: "aw21",
        area_name: "aw21Name"
    },{
        area_id: "aw22",
        area_name: "aw22Name"
    }]
  },{
      ward_id: "W132",
      ward_number: "132",
      areas: [{
      area_id: "a132",
      area_name: "a132Name"
    }, {
      area_id: "a1332",
      area_name: "a2112Name"
    }]
  }]
}

現在在這里,我想要city_details中的區域數,其中city_id = C1和ward_id = W1

我用聚合作為

    db.city_details.aggregate(
      {$match:{"city_id":"C1"}},
      {$project:{"wards":"$wards"}},
      {$unwind:"$wards"},   
      {$project{"ward":"$wards.id","area":"$wards.areas"}},
      {$match:{ward:"W1"}},
      {$project:{$count:{"area"}}
    )

這應該讓我算為2,但是它不起作用。

另外,如何更新這些區域數組?

您的查詢無效的原因是因為{$match:{ward:"W1"}}在上一個結果中找不到W1

運行{$match:{ward:"W1"}}之前的結果如下:

{
    "area" : [ 
        {
            "area_id" : "a1",
            "area_name" : "a1Name"
        }, 
        {
            "area_id" : "a2",
            "area_name" : "a2Name"
        }
    ]
},
{
    "area" : [ 
        {
            "area_id" : "a21",
            "area_name" : "a21Name"
        }, 
        {
            "area_id" : "a22",
            "area_name" : "a22Name"
        }
    ]
}

沒有W1可以找到。

相反,您可以使用如下查詢:

db.city_details.aggregat([
  {$match: {"city_id": "C1"}},
  {$project: {"ward": {$filter: {"input": "$wards", "as": "ward", "cond": { $eq: ["$$ward.ward_id", "W1"]}}}}},
  {$unwind:"$ward"},
  {$project: {"size": {$size: "$ward.areas"}}}
])

關於第二個問題。 並不是那么容易, 這篇文章將使您更多地了解如何更新mongodb中的嵌套數組。

暫無
暫無

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

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