PHP Velho Oeste 2024

Класс MongoDB

(PECL mongo >=0.9.0)

Введение

Экземпляры этого класса используются для взаимодействия с базой данных. Чтобы получить базу данных:

Пример #1 Выбор базы данных

<?php

$m 
= new MongoClient(); // подключение
$db $m->selectDB("example");

?>
Имена баз данных могут использовать практически любой символ в диапазоне ASCII. Тем не менее, они не могут содержать " ", "." или быть пустой строкой. Название "system" также зарезервировано.

Несколько необычных, но допустимых имен базы данных: "null", "[x,y]", "3", "\"", "/".

В отличие от имен коллекций, имена баз данных могут содержать "$".

Обзор классов

MongoDB {
/* Константы */
const int PROFILING_OFF = 0 ;
const int PROFILING_SLOW = 1 ;
const int PROFILING_ON = 2 ;
/* Поля */
public integer w = 1 ;
public integer wtimeout = 10000 ;
/* Методы */
public authenticate ( string $username , string $password ) : array
public command ( array $command [, array $options = array() [, string &$hash ]] ) : array
public __construct ( MongoClient $conn , string $name )
public createCollection ( string $name [, array $options ] ) : MongoCollection
public createDBRef ( string $collection , mixed $document_or_id ) : array
public drop ( void ) : array
public dropCollection ( mixed $coll ) : array
public execute ( mixed $code [, array $args = array() ] ) : array
public forceError ( void ) : bool
public __get ( string $name ) : MongoCollection
public getCollectionInfo ([ array $options = array() ] ) : array
public getCollectionNames ([ array $options = array() ] ) : array
public getDBRef ( array $ref ) : array
public getGridFS ([ string $prefix = "fs" ] ) : MongoGridFS
public getProfilingLevel ( void ) : int
public getReadPreference ( void ) : array
public getSlaveOkay ( void ) : bool
public getWriteConcern ( void ) : array
public lastError ( void ) : array
public listCollections ([ array $options = array() ] ) : array
public prevError ( void ) : array
public repair ([ bool $preserve_cloned_files = FALSE [, bool $backup_original_files = FALSE ]] ) : array
public resetError ( void ) : array
public selectCollection ( string $name ) : MongoCollection
public setProfilingLevel ( int $level ) : int
public setReadPreference ( string $read_preference [, array $tags ] ) : bool
public setSlaveOkay ([ bool $ok = TRUE ] ) : bool
public setWriteConcern ( mixed $w [, int $wtimeout ] ) : bool
public __toString ( void ) : string
}

Предопределенные константы

Уровни журнала MongoDB

MongoDB::PROFILING_OFF
Профилирование выключено.
MongoDB::PROFILING_SLOW
Профилирование включено для медленных операций (>100 мс).
MongoDB::PROFILING_ON
Профилирование включено для всех операций.

Поля

w
1

Количество серверов, на которые нужно реплицировать изменение, прежде чем вернуть успешное завершение. Наследуется экземплярами MongoCollection. Функциональность w доступна только с версии 1.5.1+ сервера MongoDB и 1.0.8+ драйвера.

Опция w используется всякий раз, когда вам нужно настроить уровень подтверждения (MongoCollection::insert(), MongoCollection::update(), MongoCollection::remove(), MongoCollection::save() и MongoCollection::ensureIndex(), все это поддерживается ). При значении по умолчанию (1) подтвержденная операция будет возвращена после выполнения операции сервером базы данных. Если сервер отключается до того, как операция будет реплицирована на вторичный сервер, можно потерять операцию навсегда. Таким образом, вы можете указать, что если w будет больше единицы, то это гарантирует, что по крайней мере один вторичный сервер выполнит операцию, прежде чем она будет считаться успешной.

Например, если w равно 2, основной сервер и один вторичный должны иметь запись операции, иначе драйвер сгенерирует исключение MongoCursorException. Соблазнительно установить для w общее число вторичных + основной, но тогда, если один вторичный сервер не работает, произойдет сбой и возникнет исключение, поэтому обычно w=2 является самым безопасным (основной сервер и один вторичный).

wtimeout
10000

Количество миллисекунд ожидания для репликации MongoDB::$w. Наследуется экземплярами MongoCollection. Функциональность w доступна только в версии 1.5.1+ сервера MongoDB и 1.0.8+ драйвера.

Если не установлено значение wtimeout, сервер всегда ждет завершения репликации на w серверах. По умолчанию драйвер ожидает 10 секунд, вы можете изменить это значение, чтобы изменить его поведение.

Смотрите также

Основная документация MongoDB для » баз данных.

Содержание

add a note add a note

User Contributed Notes 3 notes

up
6
jeromakay at yahoo dot com
13 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
-1
careddumattia at gmail dot com
8 years ago
mongo extension is deprecated.

pecl install mongodb
up
-44
m dot espositoii at yahoo dot com
12 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