Requisito: CONTAR todos los documentos de la colección DONDE objetos.Tipoobjeto igual a 'grupo' Y (objetos.Tipoobjeto NO igual a 'persona' && relación igual a 'Expuesto_a')
Esperado: devolverá el recuento de todos los documentos DONDE objetos.TipoDeObjeto igual a 'grupo' Y que no contiene ninguno (TipoDeObjeto:persona && relación:Expuesto_a) en la matriz de 'objetos'.
Un ejemplo de documento coincidente:
"objects": [ { "objectType": "organization", "relation": "Exposed_to" }, { "objectType": "group", "relation": "Exposed_to" } ]Un ejemplo de documento que no debe ser contado:
"objects": [ { "objectType": "person", "relation": "Exposed_to" }, { "objectType": "group", "relation": "Exposed_to" } ]He intentado la siguiente consulta:
.count({ 'objects.objectType': 'group', 'objects': { $elemMatch: { $and: [{'objectType' : {$ne: 'person'}, 'relation': 'Exposed_to'}] } }})pero parece que no funciona correctamente. No estoy seguro de si debo usar la agregación en este caso; también tengo menos conocimiento en esta área.
Estaré encantado de recibir ayuda. ¡Gracias!
¿Te funciona? https://mongoplayground.net/p/Q-dj7_O_AJR
Este patio de recreo no es compatible count , así que lo reemplazo por find
db.collection.find({ $and: [ { "objects.objectType": "group" }, { objects: { $not: { "$elemMatch": { "objectType": "person", "relation": "Exposed_to" } } } } ] })