MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

odejmowanie w zapytaniu mongo nie działa?

Musisz wprowadzić niewielką modyfikację do swojego $project obiekt. Musisz skorzystać z Object, który został uzyskany po odjęciu 1 od count , zamiast używać poprzedniej wartości count .

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));

Powyższy kod działałby dla grup, które mają records >= 2 . Jeśli istnieje pojedyncza grupa z tylko jednym rekordem, liczba po odjęciu będzie wynosić zero, co spowoduje dzielenie przez zero błąd.

Możesz więc zmodyfikować swój kod, tak aby zawierał $cond , aby sprawdzić, czy liczba po odjęciu wynosi 0 , jeśli tak, domyślnie jest to 1 , w przeciwnym razie zachowaj odjętą wartość 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. Pętla powolnej aktualizacji Mongodb

  2. BŁĄD:proces potomny nie powiódł się, zakończono z błędem numer 48

  3. MapReduce z MongoDB naprawdę, bardzo wolno (30 godzin vs 20 minut w MySQL dla równoważnej bazy danych)

  4. 6 najlepszych praktyk dotyczących wdrażania MongoDB na Amazon EC2

  5. Czy działa mongoskin tylko z mongodb w wersji 1.4 i starszej?