Si tengo un formato de documento en mi colección de comunicaciones:
{ "recipients": { "key1": "value1", "key2": "value2", "key3": "value3", } }Quiero obtener todos los documentos que tengan exactamente las mismas claves. En otras palabras, en el ejemplo anterior, si consulto "key1", "key2", "key3", obtengo el documento anterior. Si por el contrario dispongo del siguiente documento:
{ "recipients": { "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", } }Consultar "key1", "key2", "key3" no debería devolver nada.
Existe una solución rápida con $:
db.collection.find({ "recipients.key1":{ $exists:true }, "recipients.key2":{ $exists:true }, "recipients.key3":{ $exists:true }, "recipients.key4":{ $exists:false } })Pero esto requiere conocer todas las demás claves posibles y puede ser bastante doloroso de escribir.