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

MongoDb Jak pogrupować według miesiąca i roku z ciągu znaków

Nie możesz używać operatorów agregacji dat na czymkolwiek innym, co jest jednak Date sam obiekt. Najlepszą opcją jest przekonwertowanie tych „ciągów” na prawidłowe Date obiektów, dzięki czemu można poprawnie wykonywać zapytania w tej i przyszłych operacjach.

To powiedziawszy, jeśli twoje „ciągi” zawsze mają wspólną strukturę, można to zrobić za pomocą struktura agregacji narzędzia. Wymaga to wielu manipulacji myślami, co nie czyni tego „optymalnym” podejściem do radzenia sobie z problemem. Ale przy ustalonej strukturze „podwójnych cyfr” i spójnym ograniczniku jest to możliwe dzięki $substr operator:

db.collection.aggregate([
   { "$group": {
       "_id": {
           "year": { "$substr": [ "$dateStr", 7, 4 ] },
           "month": { "$substr": [ "$dateStr", 4, 2 ] }
       },
       "count": { "$sum": 1 }
   }}
])

Tak więc rzutowanie JavaScript nie działa w ramach agregacji. Zawsze możesz „przesyłać” dane wejściowe do potoku na podstawie oceny „kodu klienta”, ale sam proces agregacji nie ocenia żadnego kodu. Podobnie jak podstawowy silnik zapytań, wszystko to opiera się na implementacji „struktury danych”, która używa instrukcji „operatora natywnego” do wykonania pracy.

Nie można konwertować ciągów na daty w potoku agregacji. Powinieneś pracować z prawdziwą BSON Date obiekty, ale możesz to zrobić za pomocą łańcuchów, jeśli istnieje spójny format, który można przedstawić w „kolejności leksykalnej”.

Nadal sugeruję przekonwertowanie ich na BSON Dates JAK NAJSZYBCIEJ. I uważaj, że wartość „ISODate” lub UTC jest skonstruowana z inną postacią ciągu. tj.:

new Date("2020-01-07")

Będąc w formacie „rrrr-mm-dd”. Przynajmniej dla wywołania JavaScript.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB — Uzyskaj najnowszą niepustą wartość pola z dokumentów ze znacznikiem czasu

  2. Błąd MongoDB 3.0.5:błąd wyszukiwania symboli:niezdefiniowany symbol:FIPS_mode_set

  3. Agregacja MongoDb $lookup z obcymi _ids w tablicach

  4. Instalacja MongoDB w Ubuntu 14.04 nie powiodła się

  5. Jak używać nowego adresu URL z mongodb 3.6 do łączenia się z golang