想要用java做分組查詢,似乎2.4版的java驅動套件不支援db.collection.aggregate語法,所以被迫改用db.collection.group()方法。
需求:要用Mongo實現此與SQL的相同作用:
select number from user group by number having count(*) = 1
使用aggregate可以這樣實現:
db.user.aggregate(
{$group:{_id:"$number",total:{$sum:1}}},
{$match:{total:1}}
);
現在改用group方法:
db.user.group({
key : {number:1},
cond : {count:1},
initial : {count: 0},
reduce : function Reduce(doc, out) {
out.count +=1;
},
finalize : function Finalize(out) {
return out;
}
});
查不出結果,如何解決?
試了另一個方法,還是不行
話說finalize 裡面的return 有任何用處嗎?
2.4 是 2010 年發布的,那時發布的 MongoDB server 官方都不再支援了,很有必要升級了。
聚合的話推薦3.2以上版本。建議使用https://github.com/T-baby/Mon... 來操作和管理mongodb,可參考https://t-baby.gitbooks.io/mo... 。十分鐘上手