MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

I nomi dei campi FieldPath non possono contenere "." quando si tenta di utilizzare AGGREGATE

Puoi utilizzare la query di seguito

Se stai utilizzando $expr quindi puoi facilmente utilizzare l'operatore di aggregazione al suo interno. Quindi, invece di usare .dot notazione per trovare l'elemento, puoi usare $arrayElemAt operatore che ti offre la possibilità di scegliere l'elemento che desideri.

db.table.aggregate([
  { '$match': {
    '$expr': {
      '$and': [
        { '$eq': [{ '$size': '$events' }, 4] },
        { '$lt': [{ '$arrayElemAt': ['$events.updated', 0] }, '2019-05-05'] }
      ]
    }
  }}
])

O come stavi cercando di fare

db.collection.aggregate([
  { "$match": {
    "events.0.updated": { "$lt": "2019-05-05" },
    "$expr": { "$eq": [{ "$size": "$events" }, 4] }
  }}
])

Puoi controllare $expr comportamento qui