PHP Velho Oeste 2024

Руководство

Содержание

Внимание

Это расширение объявлено устаревшим. Вместо него используйте расширение MongoDB.

Это официальный драйвер MongoDB для PHP.

Вот быстрый пример кода, который соединяется с MongoDB, вставляет и запрашивает документы, выполняет итерацию результатов запроса и отключается. Подробнее о каждом шаге в руководстве ниже.

<?php

// соединяемся
$m = new MongoClient();

// выбираем базу данных
$db $m->comedy;

// выбираем коллекцию (аналог таблицы реляционной базы данных)
$collection $db->cartoons;

// добавляем запись
$document = array( "title" => "Calvin and Hobbes""author" => "Bill Watterson" );
$collection->insert($document);

// добавляем еще одну запись, с другой "формой"
$document = array( "title" => "XKCD""online" => true );
$collection->insert($document);

// находим все в коллекции
$cursor $collection->find();

// перебираем результаты
foreach ($cursor as $document) {
    echo 
$document["title"] . "\n";
}

?>

Результат выполнения данного примера:

Calvin and Hobbes
XKCD
add a note add a note

User Contributed Notes 3 notes

up
5
pgl at yoyo dot org
10 years ago
To use a collection with periods in its name, quote it with braces:

<?php
$m
= new MongoClient();

$cursor = $m->test->{'test.test'}->find();

## equivalent to the following:
#$db = $m->test;
#$collection = $db->{'test.test'};
#$cursor = $collection->find();

foreach ($cursor as $doc) {
   
print_r($doc);
?>
up
4
Josh Heidenreich
13 years ago
If you are getting "writing more" shown at random places on the screen, it's a MongoDB connector bug in 1.0.5.

Bug report: http://jira.mongodb.org/browse/PHP-91

Update to the latest connector driver and it should go away.
up
0
php at whoah dot net
14 years ago
Make sure array keys consecutive before inserting. As of 1.0.6 driver, the following will end up as an object of key:value pairs, instead of an array, because it's trying to maintain the 0 and 2 keys:

$array = array('a', 'b', 'c');
unset($array[1]);

$document = array(
'embedded' => $array,
);

// assuming local
$mongo = new Mongo();
$mongo->test->test->insert($document);

mongodb result:
{ "_id" : ObjectId(...), "embedded" : { "0" : "a", "2" : "c" } }

This is bad if you plan on indexing the embedded property as an array because objects and arrays are indexed differently.

Whether the behaviour will change or not, this is logged here: http://jira.mongodb.org/browse/PHP-104

If you know about it, it's not major, just use a sort() before inserting, or use array_* methods to remove elements instead of unset() -- anything that will re-adjust keys.
To Top