「01-JUN-2009 00:00」を日付の値として使用する方法の1つです。
まず、時間値を解析:
db.dates.aggregate([
{
$project : {
day: { $substr: [ "$Date_Time", 0, 2 ] },
month: { $substr: [ "$Date_Time", 3, 3 ] },
year: { $substr: [ "$Date_Time", 7, 4 ] },
hour: { $substr: [ "$Date_Time", 12, 2 ] },
minute: { $substr: [ "$Date_Time", 15, 2 ] }
}
},
{ $out : "dates" }
]);
次に、あなたがコメントで言及したようにMMの数値に月MMM文字列に変換します。
db.dates.find().forEach(function(doc) {
db.dates.update({_id: doc._id},{$set : {"Date_Time": doc.year + '-' + doc.month + '-' + doc.day + 'T' + doc.hour + ':' + doc.minute}});
});
最後のステップ:あなたはMongoDBの日付として解釈する文字列を作成することができ、その後
db.dates.aggregate([
{
$project: {
"day": "$day",
"year": "$year",
"hour": "$hour",
"minute": "$minute",
"month" :
{
$switch: {
branches: [
{ case: { $eq: [ "$month", "JAN" ] }, then: "01" },
{ case: { $eq: [ "$month", "FEB" ] }, then: "02" },
{ case: { $eq: [ "$month", "MAR" ] }, then: "03" },
{ case: { $eq: [ "$month", "APR" ] }, then: "04" },
{ case: { $eq: [ "$month", "MAY" ] }, then: "05" },
{ case: { $eq: [ "$month", "JUN" ] }, then: "06" },
{ case: { $eq: [ "$month", "JUL" ] }, then: "07" },
{ case: { $eq: [ "$month", "AUG" ] }, then: "08" },
{ case: { $eq: [ "$month", "SEP" ] }, then: "09" },
{ case: { $eq: [ "$month", "OCT" ] }, then: "10" },
{ case: { $eq: [ "$month", "NOV" ] }, then: "11" },
{ case: { $eq: [ "$month", "DEC" ] }, then: "12" }
]
}
}
}
},
{ $out : "dates" }
]);
:あなたは、switchステートメントを使用するには、バージョン3.4以上にする必要があります。日付()に文字列を渡すことでISODateを構築することである:私も日を試してみた
db.dates.find().forEach(function(doc) {
doc.Date_Time=new Date(doc.Date_Time);
db.dates.save(doc);
})
、それはあなたが特定のexampを提供することができます –
日を台無しにル値ですか?書式を見ると、$ substr()を使ってDate()への引数を構築することができます。 –
これはオブジェクト "Insert_Date"に書かれているものの1つです: "01-JUN-2009 00:00" 'String型MMMからMMへの変換を最初に考えているので、おそらく有効な日付として –