sql >> Databáze >  >> NoSQL >> MongoDB

Získání prvního dne týdne z čísla týdne v mongodb

Pro mongo>=v3.4 se podívejte na weekStart. Cílem je odečíst milisekundy od daného časového razítka

db.raw.aggregate([
         // stage 1
        { "$match" : {
            "Timestamp":{
                "$gte": ISODate("2012-05-30"), 
                "$lt": ISODate("2014-07-31")
            }
        }},

         // stage 2
        { "$project" : {

           ApplicationId: 1,
           Country: 1,
           week: {$isoWeek: "$Timestamp"},

           // [TRICK IS HERE] Timestamp - dayOfWeek * msInOneDay
           weekStart: { $dateToString: { format: "%Y-%m-%d", date: { // convert date
             $subtract: ["$Timestamp", {$multiply: [ {$subtract:[{$isoDayOfWeek: "$Timestamp"},1]}, 86400000]}] 
           }}},

         // stage 3
        { "$group" : {
        "_id":{ 
            "ApplicationId": "$ApplicationId",
            "Country": "$Country",
            "week": "$week"
        },
        "Date":{ "$first": "$weekStart" },
        "Visits": { "$sum": 1 }
        }}        
 ])


  1. Jak najít název pole MongoDB v libovolné hloubce

  2. jak zobrazit dotaz při používání anotací dotazu s MongoRepository s jarními daty

  3. "Pole vyžadovalo fazoli typu, který nebylo možné najít." error spring restful API pomocí mongodb

  4. mongoose:naplní se v mongoose, který nemá žádné ObjectId