2013-04-30 57 views
1

我已經創建了一個python腳本,可以自動將PDF轉換爲txt文件的工作流程。我希望能夠在MongoDB中存儲和查詢這些文件。我是否需要將.txt文件轉換爲JSON/BSON?我應該使用像PyMongo這樣的程序嗎?從txt文件存儲全文到mongodb

我只是不確定這樣的項目的步驟將不會讓工具,這將有助於這一點。

我看了這篇文章:How can one add text files in Mongodb?,這讓我覺得我需要將文件轉換爲JSON文件,並可能集成GridFS?

+0

如果它們是小文件,則不需要GridFS。如果它們很大(> 10MB),那麼您希望更有可能使用GridFS。 – WiredPrairie 2013-04-30 20:35:10

回答

0

是的,您必須將您的文件轉換爲JSON。有一個微不足道的方法來做到這一點:使用像{"text": "your text"}這樣的東西。以後很容易擴展/更新這些記錄。

當然,你需要在文本中跳出"的出現。我想你使用你最喜歡的語言的JSON庫和/或MongoDB庫來完成所有的格式化。

+0

關於如何轉換爲JSON的任何建議?我看過帖子提到明膠,但我不確定這是否是最好的工具。 – user2337225 2013-04-30 20:36:15

+0

您不應該將文本文件轉換爲json。 – WiredPrairie 2013-04-30 20:36:34

+0

是的,它看起來像我可以使用GridFS將整個文本文件作爲單個字段存儲到MongoDb中? – user2337225 2013-04-30 20:44:44

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