将txt文件中的全文存储到mongodb中

时间:2013-04-30 19:29:37

标签: python mongodb

我创建了一个python脚本,可以自动将PDF转换为txt文件。我希望能够在MongoDB中存储和查询这些文件。我是否需要将.txt文件转换为JSON / BSON?我应该使用像PyMongo这样的程序吗?

我只是不确定这样一个项目的步骤是什么,更不用说有助于此的工具了。

我看过这篇文章:How can one add text files in Mongodb?,这让我觉得我需要将文件转换为JSON文件,并可能整合GridFS?

2 个答案:

答案 0 :(得分:3)

如果您使用的是驱动程序,则无需对JSON / BSON进行编码。如果您正在使用MongoDB shell,则在粘贴内容时需要担心它。

您可能想要使用Python MongoDB driver

from pymongo import MongoClient

client = MongoClient()
db = client.test_database  # use a database called "test_database"
collection = db.files   # and inside that DB, a collection called "files"

f = open('test_file_name.txt')  # open a file
text = f.read()    # read the entire contents, should be UTF-8 text

# build a document to be inserted
text_file_doc = {"file_name": "test_file_name.txt", "contents" : text }
# insert the contents into the "file" collection
collection.insert(text_file_doc)

(未经测试的代码)

如果您确定文件名是唯一的,则可以设置文档的_id属性并将其检索为:

text_file_doc = collection.find_one({"_id": "test_file_name.txt"})

或者,您可以确保上面显示的file_name属性已编入索引并执行:

text_file_doc = collection.find_one({"file_name": "test_file_name.txt"})

您的另一个选择是使用GridFS,尽管通常不建议将其用于小文件。

Python和GridFS有一个启动器here

答案 1 :(得分:0)

是的,您必须将文件转换为JSON。有一种简单的方法可以做到这一点:使用{"text": "your text"}之类的东西。稍后可以轻松扩展/更新此类记录。

当然,您需要在文本中避开"次出现。我想您使用您喜欢的语言的JSON库和/或MongoDB库来进行所有格式化。