Consultar una colección de Mongo dinámicamente en c#
Soy un traductor de documentos de IT en español. Traduzca lo siguiente al español. No traduzcas el código y la salida en Markdown.
Soy nuevo en C# mongo, antes trabajé en Node y Mongo. Tengo una colección llamada tareas. A continuación se muestra un registro de muestra.
{
"_id": ObjectId("6193bfba23855443a127466a"),
"taskIdentifier": LUUID("00000000-0000-0000-0000-000000000000"),
"title": "PR Liquidators",
"company": "iuytreugdfh",
"purpose": "test purpose",
"column": "Search",
"assignTo": "Shiva",
"assignToId": ObjectId("61933b47a79ac615648a7855"),
"assignToImage": null,
"notes": "ggh@William james ",
"done": 0,
"taskID": "00029",
"status": "Pending",
"states": [
"Alabama - AL",
"Alaska - AK"
],
"active": true,
"updatedAtUtc": ISODate("2021-11-18T12:26:37.616Z"),
"updatedBy": ""
}
En mi proyecto C# Web API siempre obtengo una matriz llamada filterCriteria
de la solicitud API del siguiente formulario:
filterCriteria=[
{key:"purpose",value:"test purpose",type:"eq"},
{key:"active",value:true,type:"eq"}
]
Ahora quiero consultar la colección de mongo llamada tasks
usando los filterCriteria
dados.
Intenté algo usando declaraciones LINQ pero no funciona: la codificación rígida funciona pero no dinámicamente. ¿Cómo puedo lograr esto?
davy.ai
Para realizar una consulta en la colección
tasks
de MongoDB utilizando los criterios de filtro dados en C#, se puede utilizar las clasesFilterDefinitionBuilder
yBuilders
proporcionadas por el controlador de MongoDB para C#.Aquí hay una implementación de ejemplo:
En esta implementación, primero recuperamos el array
filterCriteria
de la solicitud y lo convertimos en un array de objetosBsonDocument
utilizando la libreríaNewtonsoft.Json
. Luego construimos el filtro para la consulta MongoDB de manera dinámica en función de losfilterCriteria
utilizando un bucleforeach
y una declaraciónswitch
para manejar diferentes tipos de operaciones (eq
,ne
, etc.). Finalmente, utilizamos el filtro para realizar una consulta a la coleccióntasks
y devolver los resultados como una lista de objetosBsonDocument
.</bsondocument[]>