downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

MongoCollection::find> <MongoCollection::drop
Last updated: Fri, 27 Nov 2009

view this page in

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

Description

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.

Parameters

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.

Return Values

Returns TRUE.

Changelog

Version Description
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.

Examples

Example #1 MongoCollection::ensureIndex() example

<?php

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

?>

Example #2 Drop duplicates example

<?php

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

?>


add a note add a note User Contributed Notes
MongoCollection::ensureIndex
There are no user contributed notes for this page.

MongoCollection::find> <MongoCollection::drop
Last updated: Fri, 27 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites