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

FieldPath-feltnavne må ikke indeholde '.' når du forsøger at bruge AGGREGATE

Du kan bruge nedenstående forespørgsel

Hvis du bruger $expr så kan du nemt bruge aggregeringsoperator inde i den. Så i stedet for at bruge .dot notation for at finde elementet, kan du bruge $arrayElemAt operatør, som giver dig mulighed for at vælge det element, du ønsker.

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

Eller den måde du prøvede at gøre

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

Du kan tjekke $expr adfærd her




  1. Sende typeoplysninger til MongoDB, så det kan deserialisere interfacetyper korrekt?

  2. Node.js, (Hej)Redis og multikommandoen

  3. Node.js og Passport Object har ingen metode validPassword

  4. IndsætMange arbejder ikke i mongodb