PHP Portal » PHP Handbuch » MongoCollection::ensureIndex

Werbung

MongoCollection::ensureIndex


(PECL mongo >=0.9.0)

MongoCollection::ensureIndex Creates an index on the given field(s), or does nothing if the index already exists

Beschreibung

public boolean MongoCollection::ensureIndex ( array $keys , array $options )

A unique index cannot be created on a field if multiple existing documents do not contain the field. The field is effectively NULL for these documents and thus already non-unique.

Parameter-Liste

keys

Field or fields to use as index.

options

This parameter is an associative array of the form array("optionname" => <boolean>, ...). Currently supported options are:

  • "unique"

    Create a unique index.

  • "dropDups"

    If a unique index is being created and duplicate values exist, drop all but one duplicate value.

Rückgabewerte

Returns TRUE.

Changelog

Version Beschreibung
1.0.2 Changed "options" parameter from boolean to array. Pre-1.0.2, the second parameter was an optional boolean value specifying a unique index.

Beispiele

PHP Code
1
2
3
4
5
6
7
$c = new MongoCollection($db, 'foo'); // create an index on 'x' ascending $c->ensureIndex(array('x' => 1)); // create an index on 'z' ascending and 'zz' descending $c->ensureIndex(array('z' => 1, 'zz' => -1)); // create a unique index on 'x' $c->ensureIndex(array('x' => 1), array("unique" => true));

PHP Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$collection->insert(array("username" => "joeschmoe")); $collection->insert(array("username" => "joeschmoe")); /* * index creation fails, you can't create a unique index on a key with * non-unique values */ $collection->ensureIndex(array("username" => 1), array("unique" => 1)); /* * index creation succeeds: one of the documents is removed from the collection */ $collection->ensureIndex(array("username" => 1), array("unique" => 1, "dropDups" => 1)); /* * now we have a unique index, more inserts with the same username(such as the * one below) will fail */ $collection->insert(array("username" => "joeschmoe"));