1db.books.aggregate([
2 { "$group": {
3 "_id": {
4 "addr": "$addr",
5 "book": "$book"
6 },
7 "bookCount": { "$sum": 1 }
8 }},
9 { "$group": {
10 "_id": "$_id.addr",
11 "books": {
12 "$push": {
13 "book": "$_id.book",
14 "count": "$bookCount"
15 },
16 },
17 "count": { "$sum": "$bookCount" }
18 }},
19 { "$sort": { "count": -1 } },
20 { "$limit": 2 },
21 { "$project": {
22 "books": { "$slice": [ "$books", 2 ] },
23 "count": 1
24 }}
25])
26