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

Konwersja typu danych w MongoDB

Możesz to zrobić za pomocą $concat ale najpierw musisz przekonwertować na ciąg za pomocą $substr , obsługująca również dwucyfrową wielkość liter:

db.Document.aggregate([ 
    { "$group": { 
        "_id":{ 
            "$concat": [
                 { "$substr": [ { "$year": "$CreationDate" }, 0, 4 ] },
                 "-",
                 { "$cond": [
                     { "$gt": [ { "$month": "$CreationDate" }, 9 ] },
                     { "$substr": [ { "$month": "$CreationDate" }, 0, 2 ] },
                     { "$concat": [
                         "0",
                         { "$substr": [ { "$month": "$CreationDate" }, 0, 1 ] },
                     ]},
                 ]},
                 "-",
                 { "$cond": [
                     { "$gt": [ { "$dayOfMonth": "$CreationDate" }, 9 ] },
                     { "$substr": [ { "$dayOfMonth": "$CreationDate" }, 0, 2 ] },
                     { "$concat": [
                         "0",
                         { "$substr": [ { "$dayOfMonth": "$CreationDate" }, 0, 1 ] },
                     ]}
                 ]}
             ]
         },
         { "cnt": { "$sum": 1 } }
    }}
    { "$sort":{ "cnt" :-1 }}
]);

Prawdopodobnie lepiej jest po prostu użyć matematyki daty, która zwraca wartość znacznika czasu epoki, ale łatwo jest pracować z obiektem daty w przetwarzaniu końcowym:

db.Document.aggregate([
    { "$group": {
        "_id": {
            "$subtract": [
                { "$subtract": [ "$CreationDate", new Date("1970-01-01") ] },
                { "$mod": [
                    { "$subtract": [ "$CreationDate", new Date("1970-01-01") ] },
                    1000 * 60 * 60 * 24
                ]}
            ]
        },
        "cnt": { "$sum": 1 }
    }},
    { "$sort": { "cnt": -1 } }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MapReduce z MongoDB naprawdę, bardzo wolno (30 godzin vs 20 minut w MySQL dla równoważnej bazy danych)

  2. Usuń zagnieżdżone pola ze wszystkich/wielu dokumentów w kolekcji - NodeJS + MongoDB

  3. MongoDB działa, ale nie można się połączyć za pomocą powłoki

  4. Normalizacja MongoDB, klucz obcy i łączenie

  5. Uwierzytelnianie MongoDB Atlas nie powiodło się w Pythonie