The MongoGridFS Family
MongoGridFS represents the files and chunks
collections. MongoGridFS extends MongoCollection,
and an instance of MongoGridFS has access to all of
MongoCollection methods, which act on the files
collection:
$grid=$db->getGridFS();$grid->update(array("filename"=>"foo"),$newObj);// update on the files collection?>
Another example of manipulating metadata:
<?php // save a file$id=$grid->storeFile("game.tgz");$game=$grid->findOne();// add a downloads counter$game->file['downloads'] =0;$grid->save($game->file);// increment the counter$grid->update(array("_id"=>$id), array('$inc'=> array("downloads"=>1)));?>
You can also access the chunks collection from an instance of
MongoGridFS:
$chunks=$grid->chunks;// $chunks is a normal MongoCollection$chunks->insert(array("x"=>4));?>
There are some methods for MongoGridFS with the same
name as MongoCollection methods, that behave
slightly differently. For example,
To store something new in GridFS, there are a couple options. If you have
a filename, you can say:
$grid->storeFile($filename, array("whatever"=>"metadata","you"=>"want"));?>
If you have a string of bytes that isn't a file, you can also store that
using
$grid->storeBytes($bytes, array("whatever"=>"metadata","you"=>"want"));?>
Querying a MongoGridFS collection returns a
MongoGridFSCursor, which behaves like a normal
MongoCursor except that it returns
MongoGridFSFiles instead of associative arrays.
MongoGridFSFiles can be written back to disc using
$grid->chunks collection.
MongoGridFSFile objects contain a field file which
contains any file metadata.