2016-08-03 16 views
2

Hier ist meine Mongo Shell ScriptFormat Datumswert in MongoDB Shell FIND Skript

db.MyCollection.find({ "ProjectID" : 999 } }, { 
    "_id" : 0, 
    "DueDate" : 1 
    }).sort({ "CreatedDate" : -1 }) 

Ergebnis

{ 
    "DueDate" : ISODate("2016-02-20T08:00:00.000Z") 
} 

Erwartetes Ergebnis:

{ 
"DueDate" : "2016-02-20 08:00 AM" 
} 

Versuchte nach diesem article

db.MyCollection.aggregate(
    [ 
    { 
     $project: { 
      yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$DueDate" } }, 
      time: { $dateToString: { format: "%H:%M:%S:%L", date: "$DueDate" } } 
     } 
    } 
    ] 
) 

Das null folgende geben Ergebnis

{ 
    "_id" : ObjectId("578e3bb48c305af06d30147e"), 
    "yearMonthDay" : null, 
    "time" : null 
} 

Wie kann ich diese Arbeit zu bekommen, würde ich auch mit für diejenigen aus jeder Formatierung anderen Bereichen der Projektion hinzufügen,

+0

Sehr seltsam, ich habe Ihre Aggregatabfrage versucht, und es gibt '{" _id ": ...," yearMonthDay ":" 2016-02-20 "," time ":" 08: 00: 00: 000 "}' für das von Ihnen angegebene Dokument zurück. 'null'-Werte sind im Ergebnis nicht vorhanden. – tarashypka

Antwort

0

Die Aggregationspipeline, die Sie ausführen, hat das falsche Format $dateToString. Sie müssen diese Pipeline ausführen, um das richtige Ergebnis zu erhalten:

db.MyCollection.aggregate([ 
    { "$match": { "ProjectID" : 999 } }, 
    { "$sort": { "CreatedDate": -1 } }, 
    { 
     "$project": { 
      "_id": 0, 
      "DueDate": { 
       "$dateToString": { 
        "format": "%Y-%m-%d %H-%M", 
        "date": "$DueDate" 
       } 
      } 
     } 
    } 
]) 

, die das Datum formatierte Version der Mongo Shell-Abfrage werden passiert:

db.MyCollection.find(
    { "ProjectID" : 999 } 
    { "_id" : 0, "DueDate" : 1 } 
}).sort({ "CreatedDate" : -1 }) 
+0

Wie kann ich dies in Ortszeit ISO-Datum konvertieren ISODate ("2016-10-08T17: 00: 00.000Z") gibt als "2016-10-08 17-00" zurück, was tatsächlich Samstag, 8. Oktober 2016 22:30 Uhr ist : 00 – HaBo