【问题标题】:Why am I getting "unrecognised argument to dateFromString: 'format'" despite having db version >3.6 which supports the aggregation为什么我得到“dateFromString 无法识别的参数:'format'”,尽管 db 版本 >3.6 支持聚合
【发布时间】:2019-07-15 07:37:53
【问题描述】:

我在聊天中有一些日期是这样的字符串格式:

"_id" : ObjectId("2bfd5d45348ef655b5236d93"),
"status" : "closed",
"context" : "Chats",
"chats" : {
    "time_initialized" : "2019-02-20T17:35:39.960284505Z",
    "time_responded" : "2019-02-20T17:42:06.691469546Z",
    "time_closed" : "2019-02-20T17:44:10.158421784Z"
}

我在 mongo 中的数据库版本是 3.6.5:

在 Mongo 文档中,您可以在下面看到支持 dateFromString 函数:

这是我失败的代码:

"errmsg" : "$dateFromString: 格式无法识别的参数"

db.conversations.aggregate([
   {$match: {"context": "Chats", "status": "closed", 
   "chats.time_closed": {$exists: true}}},

   {$unwind: "$chats"},

  {$project: {chats:1, _id: 1, status: 1, 
  initialised_closed_duration: 
      {$divide: [
          {$subtract: [
              {$dateFromString: {dateString: "$chats.time_closed", format: "%Y-%m-%dT%H:%M:%S.000000000Z"}},{$dateFromString: {dateString: "$chats.time_initialized", format: "%Y-%m-%dT%H:%M:%S.000000000Z"}}]},60000]}}},
 {$limit: 5}]).pretty()

我查询的目的是获取聊天的初始化和关闭日期,并计算出持续时间(以分钟为单位)(因此将毫秒日期差除以 60,000)

有人对此有任何想法吗?

【问题讨论】:

    标签: mongodb date aggregate


    【解决方案1】:

    运算符是在 3.6 中添加的,但它的签名在 v4 中发生了变化。

    在 v3.6 中没有“格式”参数。此版本的文档可在https://docs.mongodb.com/v3.6/reference/operator/aggregation/dateFromString/ 获得

    【讨论】:

    • 操,我明白你的意思了。多么令人沮丧。所以我不能指定格式。不过谢谢,我会在将其传递给 dateFromString 函数之前进行一些字符串处理
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2012-07-05
    • 2014-10-28
    • 1970-01-01
    • 2021-12-08
    • 2021-11-05
    • 2013-06-20
    相关资源
    最近更新 更多