gpt4 book ai didi

python - 如何将 MongoDB 中的 JSON 插入的created_at字段转换为Python中的日期时间对象

转载 作者:行者123 更新时间:2023-12-01 05:30:34 24 4
gpt4 key购买 nike

我已经从 Twitter 上挖掘数据几个星期了,我并没有真正考虑过将其作为 JSON 结构直接插入到 MongoDB 中。

这似乎导致“created_at”字段采用字符串格式而不是日期时间格式时出现问题。如果我想从特定日期之间的集合中撤回推文,这基本上会使我的索引毫无用处。

我正在使用 python tweepy 包,并且已经将 json 推文插入到 mongodb 中,如下所示:

    collection.insert(json.loads(data))

其中数据例如:

    {"created_at":"Tue Dec 03 23:07:53 +0000 2013","id":408009726509596672,"id_str":"408009726509596672","text":"this is some text"}

如何以编程方式将所有字符串“created_at”日期转换为集合中的日期时间对象?

“查找”推文并从数据库中迭代它们的最佳方法是什么?

我一直在尝试这样的事情:

import pymongo, datetime

from pymongo import MongoClient

client = MongoClient()

#access database
db = client.tweets

#access collection
collection = db.collection_name


tweets = collection.find({}) #just get all of the tweets in the collection.

for tweet in tweets:
print tweet #how do I update the created_at field for each tweet in the collection here?

编辑:我最终使用了 Jose 和 Xcorat 答案的混合体。

对于那些希望纯粹用 Python 完成此操作的人(继续我上面的代码),这就是我所做的:

for tweet in tweets:
thedate = tweet[u'created_at'] #in my case I was storing the date as unicode not datetime.
if(type( thedate ) == unicode):
proper_date = datetime.datetime.strptime(thedate,'%a %b %d %H:%M:%S +0000 %Y')
pointer = tweet[u'_id']
collection.update({'_id': pointer}, {'$set': {'created_at': proper_date}})
print('updated created_at from unicode to datetime\n')
else:
print('skipping as is already datetime...\n')

最佳答案

为什么不在 Mongo 上编写一个脚本来做到这一点?

在 Mongo shell 中,类似于,

db.collection.find().forEach(function (tweet){
db.collection.update({_id: tweet._id},
{$set: {created_at: new Date(tweet.created_at)}});
});

只需将所有内容压缩到一行中,然后剪切/粘贴到 mongo shell 中,就完成了。

关于python - 如何将 MongoDB 中的 JSON 插入的created_at字段转换为Python中的日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20363752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com