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
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
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));
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"));