2017-10-03 5 views
2
db.checkins.aggregate 
([{'$match':{"checkinData.time": 
        {"$gt":ISODate("2017-08-31T18:30:00.000Z"), 
        "$lte":ISODate("2017-08-31T20:00:00.000Z")}}}, 

    {"$project":{'dte': {"$dateToString": 
          {format: "%Y-%m-%d", date:"$checkinData.time"} 
         } 
       }} 

]) 

retour des données à partir des données de base parfaitement bien que cela signifie tout retour de données de la date suivante (01/09/2017). mais le problème est que valeur du champ 'DTE' sont indiquant la date précédente (2017-08-31)

mais je dois montrer la valeur de 'DTE' est la date suivante (2017-09- 01).

J'ai utilisé $ DateVersChaîne et $ sousChaîne

{"$project":{"dte":{"$substr":["$checkinData.time",0,10]}, 

elle a aussi même rendement 2017-08-31

est-il une méthode ou une requête en mongoDB pour afficher la prochaine date pour cela.

Répondre

0

Vous pouvez utiliser ce script.

{"$project":{ 'dte': { "$dateToString": { format: "%Y-%m-%d", 
         date:{ $add: [ "$checkinData.time", 
           { $subtract: [ new Date("1970-01-01T00:00:00.000Z"), new Date("1970-01-01T00:00:00.000") ] } // Time Offset 
           ] } } } } } 

Je viens d'ajouter la différence de fuseau horaire à votre date. J'ai calculé le décalage de temps comme ça.

$subtract: [ new Date("1970-01-01T00:00:00.000Z"), new Date("1970-01-01T00:00:00.000") ]