Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Índices de búsqueda de MongoDB

En esta guía puedes aprender cómo gestionar programáticamente tus índices de MongoDB Search y MongoDB Vector Search utilizando el controlador C.

La funcionalidad de búsqueda de MongoDB permite realizar búsquedas en texto completo en colecciones alojadas en MongoDB Atlas. Para obtener más información sobre MongoDB Search, consulte la MongoDB Search Overview en la documentación de Atlas.

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, listar, actualizar y borrar índices de MongoDB Search y MongoDB Vector Search.

Para crear un índice MongoDB Search o MongoDB Vector Search, pase el createSearchIndexes Comando para la función mongoc_collection_command_simple(). Puede usar este comando para crear uno o varios índices.

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 MongoDB Vector Search:

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 sola 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 aprender más 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);

Puede pasar el comando updateSearchIndex a la función mongoc_collection_command_simple() para actualizar un índice de búsqueda MongoDB o de búsqueda vectorial MongoDB.

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

Puede pasar el comando dropSearchIndexes a la función mongoc_collection_command_simple() para eliminar un índice de búsqueda MongoDB o de búsqueda vectorial MongoDB.

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 MongoDB Search Indexes en la documentación de Atlas.

Para obtener más información sobre MongoDB Vector Search, consulta 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