MongoDB 3.4如何使用特定的日期格式将字符串转换为日期

时间:2019-02-05 14:36:22

标签: python-3.x mongodb

我有以下文件;

 {
  "_id" : ObjectId("5b85312981c1634f59751604"),
  "date" : "0"
 },

 {
  "_id" : ObjectId("5b85312981c1634f59751604"),
  "date" : "20180330"
 },

 {
  "_id" : ObjectId("5b85312981c1634f59751604"),
  "date" : "20180402"
 },

 {
  "_id" : ObjectId("5b85312981c1634f59751604"),
  "date" : "20180323"
 },

我正在使用MongoDB 3.4,我想使用date的格式将ISODate转换为year-month-day,并且0将产生1970-01-01 ,结果将如下所示,

"date" : ISODate("1970-01-01")
"date" : ISODate("2018-03-30")
"date" : ISODate("2018-04-02")
"date" : ISODate("2018-03-23")

1 个答案:

答案 0 :(得分:1)

您可以在Aggregation下使用

db.documents.aggregate([{
    $addFields: {
      year: { $toString: { 
          $trunc: { $divide: [{ $toInt: '$date' }, 10000] } } 
      },
      month: {
        $toString: {
          $trunc: { $divide: [{ $mod: [{ $toInt: '$date' }, 10000] }, 100] }
        }
      },
      day: {
        $toString: {
          $trunc: { $mod: [{ $toInt: '$date' }, 100] }
        }
      }
    }
  },
  {
    $project: {
      _id: 0,
      date: {
        $toDate: {
          $cond: [
            { $ne: ['$year', '0'] }, 
            { $concat: ['$year', '-', '$month', '-', '$day'] },
            new Date("")
          ]
        }
      }
    }
  }
])

如果您有任何想法将日期“ YYYYMMDD”字符串转换为(“ YYYY”),(“ MM”) ,(“ DD”),那么我们可以使其更简单