代码之家  ›  专栏  ›  技术社区  ›  daiyue

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

  •  1
  • daiyue  · 技术社区  · 6 年前

    我有以下文件:

     {
      "_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 回复  |  直到 6 年前
        1
  •  1
  •   Ashok    6 年前

    您可以在下面使用 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”,那么我们可以让它更简单