MongoDBデータベース—実例まとめ

1598 ワード

本編では、いくつかの実例をまとめて、後に問題があったら補充するつもりです。
実例1:aggregate実現count(distinct field)
SQLでは、このような機能を実現するためには、count(distinct field)が必要であることを知っています。MongoDBには、重合関数count、distinctがありますが、aggregate重合配管操作にはこのような使い方がないので、他の方法を使ってこの機能を実現する必要があります。
1重合関数countとdistinct
# count     
db.collection.count()

#  
db.collection.find().count()

# distinct     
db.collection.distinct(field, query)

#   
db.collection.distinct('user', {'age': {'$gt': 28}});  //      age  28       
2 aggregate配管操作でcount機能を実現
集合中の各accountに使用される異なるventdor個数をカウントします。
#     
{
    { _id: 1,
     account: 'abc',
     vendor: 'amazon'
    },

    { _id: 2,
     account: 'abc',
     vendor: 'overstock'
    },

    { _id: 3,
     account: 'adf',
     vendor: 'amazon'
    }
}

#     
db.collection.aggregate([
                { '$group': { '_id': { 'account': '$account', 'vendor': '$vendor'} },
                  'number': { '$sum': 1 }                                        
                },
                { '$group': { '_id': '$_id.account' },
                  'number': { '$sum': 1 }
                }
    ])

#   
[ 
    { '_id': 'abc', 'number': 2 },
    { '_id': 'adf', 'number': 1 }
]
参考資料
MongoDB Agregation:Counting distinct fields
転載先:https://www.cnblogs.com/shaocf/p/11098720.html