MongoDBパケットクエリ(Group)
2084 ワード
MongoDBパケットクエリ(Group) :collectTest
{
"_id" : NumberLong("908531627875254272"),
"_class" : "com.XXXX",
"tripId" : NumberLong("908531628206604288"),
"userId" : NumberLong("888236517070209024"),
"payAmount" : "77.80",
"orderPrice" : "77.80",
"couponValue" : "0",
"insurancePrice" : "0",
"payType" : "BALANCE",
"orderStatus" : "CANCELED",
"payStatus" : "NOT_NEED_PAY",
"paidTime" : ISODate("2017-09-15T12:29:26.035+08:00"),
"orderCode" : "cra20170915000001",
"createTime" : ISODate("2017-09-15T11:23:14.522+08:00")
}
グループクエリーは次のとおりです.
sqlのselect userId,count(*)from tableName group by userIdと同様です。
db.collectTest.aggregate([
{
$match: {
"userId": NumberLong("888236517070209024"),
"orderStatus": "CANCELED"
}
},
{
$group: {
_id: "$userId",
count: {
$sum: 1
}
}
}
]);
いくつかの集約式は、ここを参照してリンクの内容を書いてください.
JavaでMongoTemplateを使用する呼び出し方法は次のとおりです. public void groupTest(){
List list = Lists.newArrayList(new BasicDBObject("$match", new BasicDBObject("orderStatus", "CANCELED")
.append("userId",888236517070209024L)
),new BasicDBObject("$group",new BasicDBObject("_id","$userId").append("total", new BasicDBObject("$sum",1)))
);
Cursor cursor = mongoTemplate.getCollection("collectTest").aggregate(list, AggregationOptions.builder().build());
while (cursor.hasNext()){
cursor.next();
}
}
:collectTest
{
"_id" : NumberLong("908531627875254272"),
"_class" : "com.XXXX",
"tripId" : NumberLong("908531628206604288"),
"userId" : NumberLong("888236517070209024"),
"payAmount" : "77.80",
"orderPrice" : "77.80",
"couponValue" : "0",
"insurancePrice" : "0",
"payType" : "BALANCE",
"orderStatus" : "CANCELED",
"payStatus" : "NOT_NEED_PAY",
"paidTime" : ISODate("2017-09-15T12:29:26.035+08:00"),
"orderCode" : "cra20170915000001",
"createTime" : ISODate("2017-09-15T11:23:14.522+08:00")
}
db.collectTest.aggregate([
{
$match: {
"userId": NumberLong("888236517070209024"),
"orderStatus": "CANCELED"
}
},
{
$group: {
_id: "$userId",
count: {
$sum: 1
}
}
}
]);
public void groupTest(){
List list = Lists.newArrayList(new BasicDBObject("$match", new BasicDBObject("orderStatus", "CANCELED")
.append("userId",888236517070209024L)
),new BasicDBObject("$group",new BasicDBObject("_id","$userId").append("total", new BasicDBObject("$sum",1)))
);
Cursor cursor = mongoTemplate.getCollection("collectTest").aggregate(list, AggregationOptions.builder().build());
while (cursor.hasNext()){
cursor.next();
}
}