mongodb group values by multiple fields

后端 未结 3 1463
后悔当初
后悔当初 2020-11-22 06:48

For example, I have these documents:

{
  \"addr\": \"address1\",
  \"book\": \"book1\"
},
{
  \"addr\": \"address2\",
  \"book\": \"book1\"
},
{
  \"addr\":          


        
3条回答
  •  时光取名叫无心
    2020-11-22 07:34

    Using aggregate function like below :

    [
    {$group: {_id : {book : '$book',address:'$addr'}, total:{$sum :1}}},
    {$project : {book : '$_id.book', address : '$_id.address', total : '$total', _id : 0}}
    ]
    

    it will give you result like following :

            {
                "total" : 1,
                "book" : "book33",
                "address" : "address90"
            }, 
            {
                "total" : 1,
                "book" : "book5",
                "address" : "address1"
            }, 
            {
                "total" : 1,
                "book" : "book99",
                "address" : "address9"
            }, 
            {
                "total" : 1,
                "book" : "book1",
                "address" : "address5"
            }, 
            {
                "total" : 1,
                "book" : "book5",
                "address" : "address2"
            }, 
            {
                "total" : 1,
                "book" : "book3",
                "address" : "address4"
            }, 
            {
                "total" : 1,
                "book" : "book11",
                "address" : "address77"
            }, 
            {
                "total" : 1,
                "book" : "book9",
                "address" : "address3"
            }, 
            {
                "total" : 1,
                "book" : "book1",
                "address" : "address15"
            }, 
            {
                "total" : 2,
                "book" : "book1",
                "address" : "address2"
            }, 
            {
                "total" : 3,
                "book" : "book1",
                "address" : "address1"
            }
    

    I didn't quite get your expected result format, so feel free to modify this to one you need.

提交回复
热议问题