Aquí está mi documento:
{ "_id": { "$oid": "6257a55d04bf2167733f5b72" }, "attributes": { "CustomerName": "John", "CustomerID": "28374", "LoanID": "82349327409234" "type": "Record", "Pointers": [ {"type":"car","token_id":"123"}, {"type":"house","token_id":"456"} ] } }Aquí está mi consulta de reloj con el objetivo de buscar elementos de punteros con tipo: "automóvil":
var watchCursor = db.loans.watch([ { $match: { "$or": [ { "updateDescription.updatedFields.attributes.Pointers": { $elemMatch: { "type": "car" } } }, { "fullDocument.attributes.Pointers": { $elemMatch: { "type": "car" } } } ] } } ]); while (!watchCursor.isExhausted()){ if (watchCursor.hasNext()){ print(JSON.stringify(watchCursor.next())); } }El problema es que modifico el documento pero no devuelve ningún resultado de cambio.
Como prueba, cambié la etapa $elemMatch a $exists: true , luego modifiqué el documento y devolvió el documento modificado con éxito.
¡¿qué ocurre?!