【发布时间】:2020-02-05 11:59:09
【问题描述】:
我在stackoverflow 中找到了很多答案,但没有什么能解决我的问题。我有collection,看起来像这样
#DB Name: test
#Collection Name: firstcollection
{
"_id" : ObjectId("5d8b51e80eeb1c27ce119e52"),
"url" : "http://192.168.1.37/second.html",
"browser" : "Netscape",
"uniqueId" : "dd0c76b1-77c7-445a-8bcd-e58cb239507e",
"ip" : " 162.158.166.103",
"date" : "25/09/2019 16:37:56"
}
// ----------------------------------------------
{
"_id" : ObjectId("5d8b51e80eeb1c27ce119e62"),
"url" : "http://192.168.1.37/second.html",
"browser" : "Netscape",
"uniqueId" : "c3a3c5f8-23a8-4626-9b43-b5a95fb02597",
"ip" : " 172.69.134.115",
"date" : "25/09/2019 16:38:13"
}
在这里,我想将我的date 格式为String 转换为Date 格式。我试过这段代码
> db.firstcollection.aggregate([
... {$project:{ date:{$dateFromString:{dateString:'$date'}}}}
... ])
但它显示错误
assert: command failed: {
"ok" : 0,
"errmsg" : "Error parsing date string '25/09/2019 16:37:56'; 0: Unexpected character '2'",
"code" : 40553,
"codeName" : "Location40553"
} : aggregate failed
_getErrorWithCode@src/mongo/shell/utils.js:25:13
doassert@src/mongo/shell/assert.js:16:14
assert.commandWorked@src/mongo/shell/assert.js:403:5
DB.prototype._runAggregate@src/mongo/shell/db.js:260:9
DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1212:12
@(shell):1:1
我也试过了,但没有显示格式参数
db.firstcollection.aggregate([
{ "$addFields": {
"date": {
"$dateFromString": {
"dateString": "$date",
"format": "%d-%m-%Y %H%M%S"
}
}
} }
])
我发现MongoDB 3.6 已经从这个dateFromString 中删除了format 参数answer所以我不能指定格式。
我也对 MongoDB 3.6 的手册感到困惑
在第一个 3.6 手动链接中,它说有格式参数 First Manual Link 在另一个 3.6 手动链接中,它说没有格式参数 Second Manual Link
所以我不知道如何解决这个问题。建议我一些解决方案,将MongoDB 中的string 转换为date。我想使用指定的from and to date 从 MongoDB 获取数据。由于它是字符串,我无法获得正确的数据。帮我解决一些问题
【问题讨论】:
-
使用
%Y说明符而不是%G,因为它代表ISO 8601。 mongoplayground.net/p/OcXrs4gY9Es -
@Ashh,它显示
Unrecognized argument to $dateFromString: format" -
@Ashh,还有其他解决方法吗?
-
升级到 4 及以上可以提供帮助。没有比这更重要的了。
标签: mongodb mongoose mongodb-query mongoid pymongo