Soy nuevo en las consultas de MongoDB y busco orientación sobre cómo recuperar documentos que se ajusten a los criterios de búsqueda. En particular, necesito encontrar todas las identificaciones de los documentos donde el código es JPID, es decir, "código": "JPID" . Podemos suponer que el nombre de la colección es systems .
Dado que este es un objeto anidado, pensé en usar $unwid , pero todavía estoy atascado en cómo hacerlo. El ejemplo es muy trivial. Cualquier ayuda y orientación es apreciada.
{ "resourceType": "NamingSystem", "id": "example-id", "name": "Austalian Healthcare Identifier - Individual", "status": "active", "kind": "identifier", "date": "2015-08-31", "publisher": "HL7 Australia on behalf of NEHTA", "responsible": "HI Service Operator / NEHTA", "type": { "coding": [ { "system": "http://hl7.org/fhir/v2/0203", "code": "JPID"; "display": "National unique individual identifier" } ], "text": "IHI" }, "description": "Australian HI Identifier as established by relevant regulations etc", "uniqueId": [ { "type": "oid", "value": "1.2.36.1.2001.1003.0", "comment": "This value is used in Australian CDA documents" }, { "type": "uri", "value": "http://ns.electronichealth.net.au/id/hi/ihi/1.0", "preferred": true, "period": { "start": "2015-08-21" } } ] }Puede encontrar todos los documentos que contienen al menos un elemento en la matriz type.coding simplemente haciendo coincidir el elemento de código con el valor JPID:
db.system.find({ "type.coding.code": "JPID" })Se recomienda crear e indexar en {"type.coding.code":1} para que sus búsquedas se realicen más rápido en este campo.
Si necesita encontrar todos los documentos y filtrar solo las entradas de la matriz que tienen el código: "JPID", puede usar $filter de la siguiente manera:
db.system.aggregate([ { $match: { "type.coding.code": "JPID" } }, { $addFields: { "type.coding": { "$filter": { "input": "$type.coding", "as": "tc", "cond": { $eq: [ "$$tc.code", "JPID" ] } } } } } ])