sql >> Databasteknik >  >> NoSQL >> MongoDB

FieldPath-fältnamn får inte innehålla '.' när du försöker använda AGGREGATE

Du kan använda nedanstående fråga

Om du använder $expr då kan du enkelt använda aggregeringsoperatorn inuti den. Så istället för att använda .dot notation för att hitta elementet kan du använda $arrayElemAt operatör som ger dig möjlighet att välja det element du vill ha.

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

Eller så som du försökte göra

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

Du kan kontrollera $expr beteende här




  1. Hur man bara lyssnar på localhost på MongoDB

  2. Kapslade kommentarer i MongoDB

  3. Hur skapar man ett datumfält med standardvärde som aktuell tidsstämpel i MongoDb?

  4. Kontrollera om ett fält innehåller en sträng