我在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
已从answer的format
中删除了dateFromString
的{{1}}参数,所以我无法指定格式。
我也对MongoDB 3.6的手册感到困惑
在第一个3.6手动链接中,它说存在format参数 First Manual Link 在另一个3.6手册链接中,它说没有格式参数 Second Manual Link
所以我不知道如何解决此问题。向我建议一些解决方案,以将string
中的date
转换为MongoDB
。我想通过使用指定的from and to date
从MongoDB获取数据。由于它是字符串,因此无法获取正确的数据。为我提供一些解决方案
答案 0 :(得分:3)
使用pymongo对此进行标记后,以下是一种快速方法:
from pymongo import MongoClient
import datetime
db = MongoClient()['testdatabase']
db.testcollection.insert_one({
"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"
})
db.testcollection.insert_one({
"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"
})
for item in db.testcollection.find():
if 'date' in item:
item['date'] = datetime.datetime.strptime(item['date'], '%d/%m/%Y %H:%M:%S')
db.testcollection.replace_one({'_id': item['_id']}, item)
结果:
> db.testcollection.find({}, {'_id': 0}).pretty()
{
"url" : "http://192.168.1.37/second.html",
"browser" : "Netscape",
"uniqueId" : "dd0c76b1-77c7-445a-8bcd-e58cb239507e",
"ip" : " 162.158.166.103",
"date" : ISODate("2019-09-25T16:37:56Z")
}
{
"url" : "http://192.168.1.37/second.html",
"browser" : "Netscape",
"uniqueId" : "c3a3c5f8-23a8-4626-9b43-b5a95fb02597",
"ip" : " 172.69.134.115",
"date" : ISODate("2019-09-25T16:38:13Z")
}