cari

Rumah  >  Soal Jawab  >  teks badan

group-by - MongoDB对对聚合查询结果进行筛选

想要用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;
  }
});

查不出结果,如何解决?

漂亮男人漂亮男人2846 hari yang lalu673

membalas semua(3)saya akan balas

  • 高洛峰

    高洛峰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?

    balas
    0
  • 高洛峰

    高洛峰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.

    balas
    0
  • 滿天的星座

    滿天的星座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

    balas
    0
  • Batalbalas