使用Python将MongoDB输出结果导入S3存储桶

时间:2018-07-03 08:29:53

标签: python mongodb amazon-s3 boto boto3

MongoDB数据库名称:-testdb

集合名称:-test_collection

我要执行的MongoDB命令:-

db.getCollection('test_collection').find({ request_time: { $gte: new Date('2018-06-22'), $lt: new Date('2018-06-26') }});

test_collection的文档中,有一个称为request_time的密钥。我想在('2018-06-22')('2018-06-26')

的时间范围内获取文档

MongoDB用户名:-用户 MongoDB密码:-密码

MongoDB在端口27017上运行。

我在两件事上需要帮助。我可以连接到数据库,但是在身份验证的情况下如何提供用户名和密码。这是我的Python代码,

from pymongo import Connection
connection = Connection()
connection = Connection('localhost', 27017)
db = connection.testdb
collection = db.testcollection
for post in collection.find():
        print post

另一件事是

我有一个名为mongodoc的S3存储桶。我想查询该mongo命令并将结果文档导入S3存储桶。

我可以使用名为Boto的库连接到S3存储桶,

from boto.s3.connection import S3Connection
conn = S3Connection(AWS_KEY, AWS_SECRET)
bucket = conn.get_bucket(mongodoc)
destination = bucket.new_key()
destination.name = filename
destination.set_contents_from_file(myfile)
destination.make_public()

实现此目标的推荐方法是什么?

1 个答案:

答案 0 :(得分:0)

如果提供身份验证,则必须提供用户名和密码以及主机名,

connection=Connection(hostname="",username="",password="")

对于s3连接,请尝试使用boto3而不是boto。 boto3提供了可用于s3客户端和资源的多种功能。查询后,您的mongodb结果可以以文件形式上传到s3存储桶。