chirag ghiyad
chirag ghiyad

Reputation: 700

mongodb gridfs "no file" error with python

I have mongo db database, in which i created bb_attachments gridfs object. So there is by default two collections named below. bb_attachments.files, bb_attachments.chunks

when I query on mongo shell with some file name in files collection I have a response like below...

> db.bb_attachments.files.find({"filename" : "C1208BSP130.pdf"}).toArray()
[
    {
            "_id" : "20120817014008229971__C1208BSP130.pdf",
            "contentType" : "application/pdf",
            "chunkSize" : 262144,
            "filename" : "C1208BSP130.pdf",
            "length" : 9177,
            "uploadDate" : ISODate("2012-08-17T01:40:08.253Z"),
            "md5" : "da39afb3968195f3ca5b8a1c25394b67"
    }
]
>

But when I query it using python IDLE it gives me no file Exists exceptions like..

>>> bb_attachments.exists({"filename" : "C1208BSP130.pdf"})
False
>>>

and exception like..

>>> bb_attachments.get("20120817014008229971__C1208BSP130.pdf").read()

Traceback (most recent call last):
  File "<pyshell#50>", line 1, in <module>
    bb_attachments.get("20120817014008229971__C1208BSP130.pdf").read()
  File "C:\Python25\Lib\site-packages\gridfs\__init__.py", line 130, in get
    return GridOut(self.__collection, file_id)
  File "C:\Python25\Lib\site-packages\gridfs\grid_file.py", line 343, in __init__
    (files, file_id))
NoFile: no file in gridfs collection Collection(Database(Connection('my host', 27017), u'my db'), u'fs.files') with _id '20120817014008229971__C1208BSP130.pdf'
>>>

Can anybody explain this in detail. And why I am getting fs.files in rather than bb_attachments.files??

NoFile: no file in gridfs collection Collection(Database(Connection('my host', 27017), u'my db'), **u'fs.files'**) with _id '20120817014008229971__C1208BSP130.pdf'

Upvotes: 2

Views: 2677

Answers (1)

Thomas
Thomas

Reputation: 2638

It looks like your current bb_attachments GridFS object was created with the default prefix of 'fs'.

Try creating it with the correct prefix:

bb_attachments = GridFS(db, collection="bb_attachments")

Now if you run

bb_attachments.exists({"filename" : "C1208BSP130.pdf"})

it should be able to find the file.

Upvotes: 4

Related Questions