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.

La función de búsqueda de MongoDB permite realizar búsquedas de texto completo en colecciones alojadas en MongoDB Atlas. Para obtener más información sobre la búsqueda de MongoDB, consulte Descripción general de la búsqueda de MongoDB 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, enumerar, actualizar y eliminar índices de MongoDB Search y MongoDB Vector Search.

Para crear un índice de búsqueda MongoDB o de búsqueda vectorial MongoDB, 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 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);

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 Í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