访问Mongodb中的文件

时间:2017-12-21 09:30:55

标签: mongodb python-sacred

我在python中使用神圣包,这可以跟踪我正在运行的计算实验。 sacred允许添加观察者(mongodb),其存储有关实验的各种信息(configurationsource files等)。 sacred允许使用sacred.Experiment.add_artifact(PATH_TO_FILE).

将工件添加到db bt

此命令实际上将文件添加到数据库。

我正在使用MongoDB指南针,我可以访问实验信息并看到已添加工件。它包含两个字段: “name”和“file_id”包含ObjectId。 (见图)

我试图访问存储的文件本身。我注意到在我的数据库中有一个名为sub-db的额外fs.files我可以过滤以找到我的ObjectId但它似乎不允许我访问该文件的内容本身。

object id under .files

file_id under artifact/object

3 个答案:

答案 0 :(得分:1)

MongoDB文件存储由" GridFS"处理。它基本上将文件分成块并将它们存储在一个集合中(fs.files)。

访问教程:http://api.mongodb.com/python/current/examples/gridfs.html

答案 1 :(得分:1)

GridFSimport gridfs, pymongo

的代码示例

如果您已经拥有ObjectId

artifact = gridfs.GridFS(pymongo.MongoClient().sacred)).get(objectid)

要查找名为ObjectId的工件的filename result作为db.runs.find的一个条目:

objectid = next(a['file_id'] for a in result['artifacts'] if a['name'] == filename)

答案 2 :(得分:0)

我编写了一个名为asNull的小型库,以访问通过神圣存储的MongoDB中的数据。可在GitHub https://github.com/JarnoRFB/incense上通过pip获得。有了它,您可以将实验加载为Python对象。这些工件将作为对象提供,您可以再次将它们保存在磁盘上或在Jupyter笔记本中显示

Json