Docs Menu
Docs Home
/ /

Índices de búsqueda de MongoDB

En esta guía, puede aprender a administrar mediante programación sus índices MongoDB Search y MongoDB Vector Search mediante el controlador C.

The MongoDB Search feature enables you to perform full-text searches on collections hosted on MongoDB Atlas. To learn more about MongoDB Search, see the MongoDB Search Overview in the Atlas documentation.

La Búsqueda Vectorial de MongoDB permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB Atlas. Para obtener más información sobre la Búsqueda Vectorial de MongoDB, consulte la Descripción General de la Búsqueda Vectorial de MongoDB en la documentación de Atlas.

Las siguientes secciones proporcionan ejemplos de código que demuestran cómo crear, enumerar, actualizar y eliminar índices de MongoDB Search y MongoDB Vector Search.

To create a MongoDB Search or MongoDB Vector Search index, pass the createSearchIndexes command to the mongoc_collection_command_simple() function. You can use this command to create one or multiple indexes.

El siguiente ejemplo de código muestra cómo crear un índice de búsqueda de MongoDB:

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"createSearchIndexes" : "%s",
"indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<index name>"} ]
}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
bson_free (cmd_str);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully created search index\n");
} else {
fprintf (stderr, "Failed to create search index: %s", error.message);
}
bson_destroy (&cmd);

El siguiente ejemplo de código muestra cómo crear un índice de búsqueda vectorial de MongoDB:

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"name": "<index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}]
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created Vector Search index\n");
} else {
fprintf(stderr, "Failed to create Vector Search index: %s", error.message);
}
bson_destroy(&cmd);

El siguiente ejemplo de código muestra cómo crear ambos índices de búsqueda en una llamada a la función mongoc_collection_command_simple():

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"createSearchIndexes": "%s",
"indexes": [{
"definition": {
"mappings": {
"dynamic": false
}
},
"name": "<MongoDB Search index name>"
},
{
"name": "<Vector Search index name>",
"type": "vectorSearch",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "euclidean"
}]
}
}
]
}),
"<collection name>");
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully created search indexes\n");
} else {
fprintf(stderr, "Failed to create search indexes: %s", error.message);
}
bson_destroy(&cmd);

Para obtener más información sobre la sintaxis utilizada para definir cada índice de búsqueda, consulte las siguientes guías en la documentación de Atlas:

Puede pasar la etapa de agregación $listSearchIndexes a la función mongoc_collection_aggregate() para devolver todos los índices MongoDB Search y MongoDB Vector Search en una colección.

El siguiente ejemplo de código muestra cómo imprimir una lista de los índices de búsqueda en una colección:

bson_t pipeline;
const bson_t *doc;
bson_error_t error;
const char *pipeline_str = BSON_STR ({"pipeline" : [ {"$listSearchIndexes" : {}} ]});
bson_init_from_json (&pipeline, pipeline_str, -1, &error);
mongoc_cursor_t *cursor =
mongoc_collection_aggregate (collection, MONGOC_QUERY_NONE, &pipeline, NULL, NULL);
while (mongoc_cursor_next (cursor, &doc)) {
char *str = bson_as_canonical_extended_json (doc, NULL);
printf ("%s\n", str);
bson_free (str);
}
bson_destroy (&pipeline);
mongoc_cursor_destroy (cursor);

You can pass the updateSearchIndex command to the mongoc_collection_command_simple() function to update a MongoDB Search or MongoDB Vector Search index.

El siguiente código muestra cómo actualizar el índice de búsqueda de MongoDB creado en la sección Crear un índice de búsqueda de esta guía para usar asignaciones dinámicas:

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"updateSearchIndex" : "%s",
"definition" : {"mappings" : {"dynamic" : true}}, "name" : "<index name>"}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
bson_free (cmd_str);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully updated search index\n");
} else {
fprintf (stderr, "Failed to create search index: %s", error.message);
}
bson_destroy (&cmd);

El siguiente código muestra cómo actualizar el índice de búsqueda vectorial de MongoDB creado en la sección Crear un índice de búsqueda de esta guía para usar la cosine función de similitud:

bson_t cmd;
bson_error_t error;
char * cmd_str = bson_strdup_printf(
BSON_STR({
"updateSearchIndex": "%s",
"name": "<index name>",
"definition": {
"fields": [{
"type": "vector",
"path": "plot_embedding",
"numDimensions": 1536,
"similarity": "cosine"
}]
}
}),
"<collection name>"
);
bson_init_from_json(&cmd, cmd_str, -1, &error);
bson_free(cmd_str);
if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) {
printf("Successfully updated search index\n");
} else {
fprintf(stderr, "Failed to create search index: %s", error.message);
}
bson_destroy(&cmd);

You can pass the dropSearchIndexes command to the mongoc_collection_command_simple() function to delete a MongoDB Search or MongoDB Vector Search index.

El siguiente código muestra cómo eliminar un índice de búsqueda de una colección:

bson_t cmd;
bson_error_t error;
char *cmd_str = bson_strdup_printf (
BSON_STR ({
"dropSearchIndexes" : "%s",
"index" : "<index name>"
}),
"<collection name>");
bson_init_from_json (&cmd, cmd_str, -1, &error);
if (mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
printf ("Successfully deleted search index\n");
} else {
fprintf (stderr, "Failed to delete search index: %s", error.message);
}
bson_destroy (&cmd);

Para obtener más información sobre MongoDB Search, consulte Índices de búsqueda de MongoDB en la documentación de Atlas.

Para obtener más información sobre MongoDB Vector Search, consulte Cómo indexar campos para MongoDB Vector Search en la documentación de Atlas.

Para aprender más sobre alguna de las funciones tratadas en esta guía, consulta la siguiente documentación de la API:

Volver

Multikey Indexes

En esta página