Rumah > Soal Jawab > teks badan
想要用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;
}
});
查不出结果,如何解决?
高洛峰2017-04-25 09:06:30
Saya mencuba kaedah lain, tetapi masih tidak berjaya
db.user.group({
key : {number:1},
cond : {},
initial : {count: 0},
reduce : function Reduce(doc, out) {
out.count +=1;
},
finalize : function Finalize(out) {
if(out.count==1){
return out;
}
}
});
Dengan cara ini, adakah terdapat sebarang kegunaan untuk pemulangan dalam muktamad?
高洛峰2017-04-25 09:06:30
2.4 telah dikeluarkan pada tahun 2010. Pelayan MongoDB yang dikeluarkan pada masa itu tidak lagi disokong secara rasmi, jadi perlu ditingkatkan.
滿天的星座2017-04-25 09:06:30
Untuk pengagregatan, versi 3.2 atau lebih tinggi disyorkan. Adalah disyorkan untuk menggunakan https://github.com/T-baby/Mon... untuk mengendalikan dan mengurus mongodb Sila rujuk https://t-baby.gitbooks.io/mo... . Bermula dalam sepuluh minit