sql >> Databasteknik >  >> NoSQL >> MongoDB

Datatypkonvertering i MongoDB

Du kan göra detta med $concat men först måste du konvertera till en sträng via $substr , hanterar även det tvåsiffriga fallet:

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

Möjligen är det bättre att bara använda datummatematik istället, detta returnerar ett epoktidsstämpelvärde, men det är lätt att arbeta in ett datumobjekt i efterbehandling:

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. Kan jag ändra befintligt index i MongoDB utan att ta bort det?

  2. Mongodb - $grupp i en $grupp (med 'nyckel')

  3. Lär känna Redis-databasen:Iterera över nycklar

  4. Fråga efter ett fält i ett objekt i array med Mongo?