我正在编写一个脚本来处理和存储数百万条推文。我的代码的工作方式是将Tweet的ID存储为MongoDB文档的_ id,以使其在我的数据库中唯一。我观察到的是,Tweet ID似乎不是唯一的,并且在将不同用户的Tweet写入DB时出现重复键错误。雪花(https://developer.twitter.com/en/docs/basics/twitter-ids)的文档概述了如何生成推文ID,并且在Twitter数据库中似乎应该是唯一的。有人可以确认Twitter的Tweet ID在他们的数据库中是否实际上是唯一的吗?这是我的代码的工作方式:
def write_tweets_to_db(tweets):
processed_tweets = []
for tweet in tweets:
processed_tweets = process_tweet(tweet) # This is where I convert tweepy object to dict and
# set _id key to tweet ID
for tweet in processed_tweets:
try:
collection.insert_one(tweet)
except Exception as e:
print('Error while writing tweet to DB | Error: {}'.format(e))
# Error while writing tweet to DB | Error: E11000 duplicate key error collection: [DB].[collection] index: _id_ dup key: { _id: 1235024705523863552 }
推特ID确实是唯一的。您应该始终使用ID的字符串变体,以避免JavaScript和其他无法处理大整数转换数字的语言出现问题。