検索

ホームページ  >  に質問  >  本文

mongodb aggregate(group) sub document 问题

我的数据:

    { 
        "_id" : ObjectId("542911f4d7054ab6ee0de476"), 
        "name" : "policy2", 
        "url" : [ "www.url22.com", "www.url21.com" ], 
        "countries" : [ 
            { "country" : "USA" }, 
            { "country" : "GER" } 
        ] 
    }

我想单独group by countries.country字段,单独统计USA出现几次,China出现几次,而不是[USA,GER]在一起出现几次,如下:

{ "_id" : "China", "total" : 1 }
{ "_id" : "USA", "total" : 2 }
{ "_id" : "GER", "total" : 1 }
{ "_id" : "JP", "total" : 1 }

我尝试使用aggregate

db.policy.aggregate({$group:{_id:"$countries.country",total:{$sum:1}}})

但是得到的结果是countries合在一起的统计结果:

{ "_id" : [ "China" ], "total" : 1 }
{ "_id" : [ "USA", "JP" ], "total" : 1 }
{ "_id" : [ "USA", "GER" ], "total" : 1 }

求解决方案!!

伊谢尔伦伊谢尔伦2806日前627

全員に返信(2)返信します

  • PHP中文网

    PHP中文网2017-04-24 09:15:05

    $unwind を使用します:

    リーリー

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-24 09:15:05

    $unwind関数を使用することが解決策を見つけました

    リーリー

    返事
    0
  • キャンセル返事