With Mongo it'll automatically create the collection, so just start using it and it'll do the creation itself.
In other words... just use SelectCollection, if it doesn't exist, it will after that so you can drop it.
The MongoDB class
Introduction
Instances of this class are used to interact with a database. To get a database:
<?php
$m = new Mongo(); // connect
$db = $m->selectDB("example");
?>
A few unusual, but valid, database names: "null", "[x,y]", "3", "\"", "/".
Unlike collection names, database names may contain "$".
Class synopsis
Predefined Constants
MongoDB Log Levels
-
MongoDB::PROFILING_OFF
0 - Profiling is off.
-
MongoDB::PROFILING_SLOW
1 - Profiling is on for slow operations (>100 ms).
-
MongoDB::PROFILING_ON
2 - Profiling is on for all operations.
Fields
-
w
1 -
The number of servers to replicate a change to before returning success. Inherited by instances of MongoCollection derived from this. w functionality is only available in version 1.5.1+ of the MongoDB server and 1.0.8+ of the driver.
w is used whenever you perform a "safe" operation (MongoCollection::insert(), MongoCollection::update(), MongoCollection::remove(), MongoCollection::save(), and MongoCollection::ensureIndex() all support safe options). With the default value (1), a safe operation will return once the database server has the operation. If the server goes down before the operation has been replicated to a slave, it is possible to lose the operation forever. Thus, you can specify w to be higher than one and guarantee that at least one slave has the operation before it is considered successful.
For example, if w is 2, the main server and one slave must have a record of the operation or the driver will throw a MongoCursorException. It is tempting to set w to the total number of slaves + master, but then if one slave is down the op will fail and an exception will be thrown, so usually w=2 is safest (master+1 slave).
-
wtimeout
10000 -
The number of milliseconds to wait for MongoDB::$w replications to take place. Inherited by instances of MongoCollection derived from this. w functionality is only available in version 1.5.1+ of the MongoDB server and 1.0.8+ of the driver.
Unless wtimeout is set, the server waits forever for replicating to w servers to finish. The driver defaults to waiting for 10 seconds, you can change this value to alter its behavior.
See Also
MongoDB core docs on » databases.
Table of Contents
- MongoDB::authenticate — Log in to this database
- MongoDB::command — Execute a database command
- MongoDB::__construct — Creates a new database
- MongoDB::createCollection — Creates a collection
- MongoDB::createDBRef — Creates a database reference
- MongoDB::drop — Drops this database
- MongoDB::dropCollection — Drops a collection [deprecated]
- MongoDB::execute — Runs JavaScript code on the database server.
- MongoDB::forceError — Creates a database error
- MongoDB::__get — Gets a collection
- MongoDB::getDBRef — Fetches the document pointed to by a database reference
- MongoDB::getGridFS — Fetches toolkit for dealing with files stored in this database
- MongoDB::getProfilingLevel — Gets this database's profiling level
- MongoDB::getSlaveOkay — Get slaveOkay setting for this database
- MongoDB::lastError — Check if there was an error on the most recent db operation performed
- MongoDB::listCollections — Get a list of collections in this database
- MongoDB::prevError — Checks for the last error thrown during a database operation
- MongoDB::repair — Repairs and compacts this database
- MongoDB::resetError — Clears any flagged errors on the database
- MongoDB::selectCollection — Gets a collection
- MongoDB::setProfilingLevel — Sets this database's profiling level
- MongoDB::setSlaveOkay — Change slaveOkay setting for this database
- MongoDB::__toString — The name of this database
based on what I've read and then applied, you don't have to specifically create a database or table, you just initialize it.
Indeed, files are not being written inside /data/db, but they will the first moment you start adding data.
So, I'm taking as an example Twitter, with no db defined, I'm still going to have the db available if I run this code:
<?php
define('TWITTER_API_VERSION', 1);
date_default_timezone_set("Europe/Dublin");
try
{
$m = new Mongo(); // connect
$db = $m->selectDB("example");
}
catch ( MongoConnectionException $e )
{
echo '<p>Couldn\'t connect to mongodb, is the "mongo" process running?</p>';
exit();
}
$updates = file_get_contents( "http://api.twitter.com/". TWITTER_API_VERSION ."/statuses/public_timeline.json" );
$updates = json_decode( $updates );
if ( $updates && is_array( $updates ) && count( $updates ) )
{
foreach ( $updates as $update )
{
$db->users->insert( $update );
}
}
?>
Hope this was helpful!
Good luck!
Vladimir Ghetau
Just a note that if you use selectDB() and only select it, the database will not be created. In PHPMongoDBAdmin(http://github.com/jwage/php-mongodb-admin) I wanted a way to create a database through a form so I needed to create a dummy collection and drop it in order for the database to be created. MongoDB has a drop() method but no create() method.
<?php
$mongo->selectDB('db')->createCollection('__tmp_collection_');
$mongo->selectDB('db')->dropCollection('__tmp_collection_');
?>
Any better way to do this?
