Docs Menu
Docs Home
/ / /
PHP Library Manual
/ /

MongoDB\Collection::createSearchIndex()

On this page

  • Definition
  • Parameters
  • Return Values
  • Errors/Exceptions
  • Behavior
  • Examples
  • See Also

New in version 1.17.

MongoDB\Collection::createSearchIndex()

Create an Atlas Search index for the collection.

function createSearchIndex(
array|object $definition,
array $options = []
): string

This command can only be run on a deployment hosted on MongoDB Atlas and requires an Atlas cluster tier of at least M10. A Local Atlas Deployment can also be used for development.

$definition : array|object
Document describing the index to create. For details on definition syntax, see Search Index Definition Syntax.
$options : array

An array specifying the desired options.

Name
Type
Description
comment
mixed

Enables users to specify an arbitrary comment to help trace the operation through the database profiler, currentOp output, and logs.

name
string

Name of the search index to create.

You cannot create multiple indexes with the same name on a single collection. If you do not specify a name, the index is named "default".

The name of the created Atlas Search index as a string.

MongoDB\Exception\UnsupportedException if options are used and not supported by the selected server (e.g. collation, readConcern, writeConcern).

MongoDB\Exception\InvalidArgumentException for errors related to the parsing of parameters or options.

MongoDB\Driver\Exception\RuntimeException for other errors at the extension level (e.g. connection errors).

Atlas Search indexes are managed asynchronously. After creating or updating an index, you can periodically execute MongoDB\Collection::listSearchIndexes() and check the queryable output field to determine whether it is ready to be used.

The following example creates an Atlas Search index using dynamic mappings to index all document fields containing supported data types.

<?php
$collection = (new MongoDB\Client)->selectCollection('test', 'articles');
$indexName = $collection->createSearchIndex(
['mappings' => ['dynamic' => true]],
['name' => 'test-search-index']
);
var_dump($indexName);

The output would then resemble:

string(17) "test-search-index"

Back

createIndexes()