Add find_one() method for gridfs.

This commit is contained in:
ximing 2014-10-27 02:29:26 +08:00 committed by A. Jesse Jiryu Davis
parent fd8dd020bc
commit facd8945b9

View File

@ -280,6 +280,36 @@ class GridFS(object):
name for name in self.__files.distinct("filename")
if name is not None]
def find_one(self, spec_or_id=None, *args, **kwargs):
"""Get a single file from gridfs.
All arguments to :meth:`find` are also valid arguments for
:meth:`find_one`, although any `limit` argument will be
ignored. Returns a single gridfs file, or ``None`` if no matching
file is found. For example::
file = fs.find_one({"filename": "lisa.txt"})
:Parameters:
- `spec_or_id` (optional): a dictionary specifying
the query to be performing OR any other type to be used as
the value for a query for ``"_id"`` in the file collection.
- `*args` (optional): any additional positional arguments are
the same as the arguments to :meth:`find`.
- `**kwargs` (optional): any additional keyword arguments
are the same as the arguments to :meth:`find`.
"""
if spec_or_id is not None and not isinstance(spec_or_id, dict):
spec_or_id = {"_id": spec_or_id}
for file in self.find(spec_or_id, *args, **kwargs):
return file
return None
def find(self, *args, **kwargs):
"""Query GridFS for files.