sql >> Database >  >> NoSQL >> MongoDB

Eerste dag van de week krijgen van weeknummer in mongodb

Kijk voor mongo>=v3.4 naar weekStart. Het idee is om milliseconden van de gegeven Timestamp te substructeren

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. Aangepaste converters instellen in Spring Data Mongo

  2. MongoDB geneste query retourneert alleen het laatst voorkomende resultaat

  3. Java/MongoDB-zoekopdracht op datum

  4. Maakt django met mongodb migraties tot het verleden?