Tengo una colección que contiene algunos documentos de la siguiente manera,
{ "transactionId": 3432423, "reviews": [ { "fromUser": { "userId": "5236aa1acd6e" }, "toUser": { "userId": "0ec8db9544cc" }, "rating": 4.3, "comment": "" }, { "toUser": { "userId": "5236aa1acd6e", "email": "yourlife@gmail.com", "firstName": "your", "lastName": "life" }, "fromUser": { "userId": "0ec8db9544cc", "email": "mylife@gmail.com", "firstName": "my", "lastName": "life" }, "rating": 4.3, "comment": "" } ] }Necesito verificar si las revisiones de subdocumentos están presentes dentro del documento. he usado esta consulta,
db.getCollection('_testCollection').find({ "$elemMatch": { "reviews": { "$exists": false } }})arroja un error diciendo,
"errmsg" : "unknown top level operator: $elemMatch",Ni $elemMatch ni $exists es lo que desea usar para determinar si las reviews son una matriz vacía.
En su lugar, compare con [] :
db.test.find({reviews: []}) O use el operador $size :
db.test.find({reviews: {$size: 0}})De los documentos: -
El operador $elemMatch hace coincidir documentos que contienen un campo de matriz con al menos un elemento que coincide con todos los criterios de consulta especificados.
db.getCollection('_testCollection').find({ "reviews": {"$elemMatch" : { "$exists": false } }})$existe:- verdadero o falso // depende del requisito
Gracias