假设这是我的数据:

[
  {"Id_Cust": "4145","firstName": "Albade","lastName": "Maazou", "gender": "female","date": "031981"},
  {"Id_Cust": "5296", "firstName": "Rafael","lastName": "Oliveira","gender": "male","date": "061987"},
  {"Id_Cust": "6192","firstName": "Abdul Rahman","lastName": "Budjana","gender": "male","date": "011990"}
]

我试着用$datetostring$datefromstring 我也try 了格式化,但仍收到错误:- 但是,什么都没发生.

OperationFailure: PlanExecutor error during aggregation :: caused by :: an incomplete date/time string has been found, with elements missing: "031981", full error: {'ok': 0.0, 'errmsg': 'PlanExecutor error during aggregation :: caused by :: an incomplete date/time string has been found, with elements missing: "031981"', 'code': 241, 'codeName': 'ConversionFailure'}

推荐答案

Mongo要求"日期"部分完全存在,这意味着它预计至少有一年、一个月和一天.

因此,您可以在字符串中填充01并提供格式选项:

db.collection.aggregate([
  {
    $addFields: {
      date: {
        "$dateFromString": {
          "dateString": {
            "$concat": [
              "01",
              "$date"
            ]
          },
          "format": "%d%m%Y"
        }
      }
    }
  }
])

Mongo Playground

或者使用$dateFromParts:

db.collection.aggregate([
  {
    $addFields: {
      date: {
        "$dateFromParts": {
          year: {
            "$toInt": {
              "$substr": [
                "$date",
                2,
                4
              ]
            }
          },
          month: {
            $toInt: {
              $substr: [
                "$date",
                0,
                2
              ]
            }
          }
        }
      }
    }
  }
])

Mongo Playground


奖励-此要求在文档中没有明确说明,但可以在源代码中找到:

if (s->time->y != TIMELIB_UNSET && s->time->m != TIMELIB_UNSET &&
    s->time->d != TIMELIB_UNSET &&
    !timelib_valid_date( s->time->y, s->time->m, s->time->d)) {
    add_pbf_warning(s, TIMELIB_WARN_INVALID_DATE, "The parsed date was invalid", string, ptr);
}

Mongodb相关问答推荐

如何从文档列表的数组内部打印一个对象?

MongoDB(Mongoose)条件判断没有像我预期的那样工作

我无法将文档发送到我的MongoDB集合,因为它告诉我使文档无效

MongoDB:如何从数组中的所有对象中删除属性?

如何匹配 MongoDB 中同一文档中两个字段的比较?

pymongo - ifnull 重新调整整个对象而不是特定字段

Golang:如何判断 collection.Find 是否没有找到任何文件?

Mongoose 返回包含属性内任何位置的值的所有文档

MongoDB 支持的最 Big Data 库数

使用绝对类型在 Typescript 中编写 Mongoose 的类型化模型和模式的类和接口

使用 mgo 从 golang 中的 Mongodb 中 Select 列

我怎样才能排序空值在 mongodb 中是最后排序的?

Mongoose 是否真的验证了对象 ID 的存在?

使用 Java 驱动程序更新 MongoDB 中的数组

Flask:设置应用程序和请求特定的属性?

MongoDB:查询和检索嵌入式数组中的对象?

Mongodb - 如何在多个字段中查找字符串?

MongoDB 按数组元素对文档进行排序

MongoDb 连接被拒绝

在 mongodb 集合中查找最旧/最新的帖子