Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL

La clase MongoDB

(PECL mongo >=0.9.0)

Introducción

Las instancias de esta clase se utilizan para interactuar con la base de datos. Para seleccionar una base de datos:

Ejemplo #1 Seleccionar una base de datos

<?php

$m 
= new MongoClient(); // conectar
$db $m->selectDB("ejemplo");

?>
Los nombres de bases de datos pueden utilizar prácticamente cualquier carácter del rango ASCII. Sin embargo no pueden contener ni " ", "." ni un texto vacío. El nombre "system" también está reservado.

Hay algunos nombres poco usuales de bases de datos que sí son válidos: "null", "[x,y]", "3", "\"", "/".

A diferencia de los nombres de colecciones, los nombres bases de datos pueden contener "$".

Sinopsis de la Clase

MongoDB {
/* Constantes */
const int PROFILING_OFF = 0 ;
const int PROFILING_SLOW = 1 ;
const int PROFILING_ON = 2 ;
/* Campos */
public integer $w = 1 ;
public integer $wtimeout = 10000 ;
/* Métodos */
public array authenticate ( string $username , string $password )
public array command ( array $command [, array $options = array() ] )
public __construct ( MongoClient $conn , string $name )
public MongoCollection createCollection ( string $name [, array $options ] )
public array createDBRef ( string $collection , mixed $document_or_id )
public array drop ( void )
public array dropCollection ( mixed $coll )
public array execute ( mixed $code [, array $args = array() ] )
public bool forceError ( void )
public MongoCollection __get ( string $name )
public array getCollectionNames ([ bool $includeSystemCollections = false ] )
public array getDBRef ( array $ref )
public MongoGridFS getGridFS ([ string $prefix = "fs" ] )
public int getProfilingLevel ( void )
public array getReadPreference ( void )
public bool getSlaveOkay ( void )
public array getWriteConcern ( void )
public array lastError ( void )
public array listCollections ([ bool $includeSystemCollections = false ] )
public array prevError ( void )
public array repair ([ bool $preserve_cloned_files = FALSE [, bool $backup_original_files = FALSE ]] )
public array resetError ( void )
public MongoCollection selectCollection ( string $name )
public int setProfilingLevel ( int $level )
public bool setReadPreference ( string $read_preference [, array $tags ] )
public bool setSlaveOkay ([ bool $ok = true ] )
public bool setWriteConcern ( mixed $w [, int $wtimeout ] )
public string __toString ( void )
}

Constantes predefinidas

Niveles de Logs de MongoDB

MongoDB::PROFILING_OFF
0
Profiling deshabilitado.
MongoDB::PROFILING_SLOW
1
Profiling habilitado para operaciones lentas (>100 ms).
MongoDB::PROFILING_ON
2
Profiling habilitado para todas las operaciones.

Campos

w
1

Número de servidores en los que replicar los cambios antes de retornar éxito. Se hereda por las instancias de MongoCollection que deriven de este objeto. w sólo está disponible en versiones 1.5.1+ del servidor MongoDB y 1.0.8+ del driver.

w se usa cada vez que sea necesario ajustar el nivel de aceptación (MongoCollection::insert(), MongoCollection::update(), MongoCollection::remove(), MongoCollection::save(), y MongoCollection::ensureIndex() soportan esta opción). Con el valor predeterminado (1), una operación aceptada devolverá una vez que el servidor de bases de datos obtenga la operación. Si el servidor se cayera antes de que la operación fuera replicada a un secundario, podría perderse la operación de forma permanente. De esta forma, se puede especificar en w un valor superior a uno para garantizar que al menos un secundario ha recibido la operación antes de que se considere que ha habido éxito.

Por ejemplo, si w fuera 2, el primario y un secundario tendrán un registro de la operación o el controlador lanzará una MongoCursorException. Puede ser tentador establecer en w el total de secundarios + primario, pero entonces, si un secundario se cayera, la operación fallaría y se lanzaría una excepción, por lo que suele ser más seguro establecer w=2 (primario y un secundario).

wtimeout
10000

Número de milisegundos a esperar a que las réplicas de MongoDB::$w tengan lugar. Se hereda por las instancias de MongoCollection que deriven de este objeto. w sólo está disponible en las versiones 1.5.1+ del servidor MongoDB y en las 1.0.8+ del driver.

A no ser que se establezca un valor en wtimeout, el servidor esperará eternamente a que se replique a w servidores para finalizar. Por omisión el driver esperará 10 segundos. Puede modificarse este valor para alterar este comportamiento.

Ver también

Documentación de MongoDB de » bases de datos.

Tabla de contenidos

add a note add a note

User Contributed Notes 2 notes

up
0
jeromakay at yahoo dot com
3 years ago
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
up
-4
m dot espositoii at yahoo dot com
2 years ago
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.
To Top