MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

pengurangan dalam kueri mongo tidak berfungsi?

Anda perlu membuat sedikit modifikasi pada $project obyek. Anda perlu menggunakan Object yang diperoleh dengan mengurangkan 1 dari count , daripada menggunakan nilai count sebelumnya .

DBObject project = new BasicDBObject("_id", 0);
DBObject countAfterSubtraction = new BasicDBObject("$subtract", 
                                     new Object[] {"$count", 1});
DBObject value = new BasicDBObject("$divide", 
                            new Object[] {"$value",countAfterSubtraction});
project.put("value", value);
project.put("Date", "$_id");
stages.add(new BasicDBObject("$project", project));

Kode di atas akan berfungsi untuk grup yang memiliki records >= 2 . Jika ada satu grup dengan hanya satu record, hitungan setelah pengurangan akan menjadi nol, menghasilkan bagi dengan nol kesalahan.

Jadi Anda dapat memodifikasi kode Anda, untuk menyertakan $cond , untuk memeriksa apakah hitungan setelah pengurangan adalah 0 , jika ya, maka default ke 1 , jika tidak, pertahankan nilai yang dikurangi dari count .

DBObject project = new BasicDBObject("_id", 0);
DBObject countAfterSubtraction = new BasicDBObject("$subtract", 
                                       new Object[] {"$count", 1});
DBObject eq  = new BasicDBObject("$eq",
                        new Object[]{countAfterSubtraction,0});
DBObject cond = new BasicDBObject("$cond",
                         new Object[]{eq,1,countAfterSubtraction});
DBObject value = new BasicDBObject("$divide", 
                                new Object[] {"$value",cond});
project.put("value", value);
project.put("Date", "$_id");
stages.add(new BasicDBObject("$project", project));



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bisakah saya mengubah indeks yang ada di MongoDB tanpa menghapusnya?

  2. MongoTemplate upsert - cara mudah untuk membuat Pembaruan dari pojo (pengguna mana yang telah diedit)?

  3. PouchDB/CouchDB seperti alternatif untuk MongoDB

  4. Bagaimana Mengintegrasikan Pyramid 1.1 dan Mongo DB - sesedikit mungkin baris

  5. Array proyek Objek ke Nilai Kunci