我已经创建了一个python脚本,可以自动将PDF转换为txt文件的工作流程。我希望能够在MongoDB中存储和查询这些文件。我是否需要将.txt文件转换为JSON/BSON?我应该使用像PyMongo这样的程序吗?从txt文件存储全文到mongodb
我只是不确定这样的项目的步骤将不会让工具,这将有助于这一点。
我看了这篇文章:How can one add text files in Mongodb?,这让我觉得我需要将文件转换为JSON文件,并可能集成GridFS?
我已经创建了一个python脚本,可以自动将PDF转换为txt文件的工作流程。我希望能够在MongoDB中存储和查询这些文件。我是否需要将.txt文件转换为JSON/BSON?我应该使用像PyMongo这样的程序吗?从txt文件存储全文到mongodb
我只是不确定这样的项目的步骤将不会让工具,这将有助于这一点。
我看了这篇文章:How can one add text files in Mongodb?,这让我觉得我需要将文件转换为JSON文件,并可能集成GridFS?
是的,您必须将您的文件转换为JSON。有一个微不足道的方法来做到这一点:使用像{"text": "your text"}
这样的东西。以后很容易扩展/更新这些记录。
当然,你需要在文本中跳出"
的出现。我想你使用你最喜欢的语言的JSON库和/或MongoDB库来完成所有的格式化。
关于如何转换为JSON的任何建议?我看过帖子提到明胶,但我不确定这是否是最好的工具。 – user2337225 2013-04-30 20:36:15
您不应该将文本文件转换为json。 – WiredPrairie 2013-04-30 20:36:34
是的,它看起来像我可以使用GridFS将整个文本文件作为单个字段存储到MongoDb中? – user2337225 2013-04-30 20:44:44
如果您使用驱动程序,则不需要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。
如果它们是小文件,则不需要GridFS。如果它们很大(> 10MB),那么您希望更有可能使用GridFS。 – WiredPrairie 2013-04-30 20:35:10