sql >> Database >  >> NoSQL >> MongoDB

Veldnamen van FieldPath mogen geen '.' bevatten. wanneer u AGGREGATE probeert te gebruiken

U kunt onderstaande zoekopdracht gebruiken

Als u $expr gebruikt dan kunt u er gemakkelijk een aggregatie-operator in gebruiken. Dus in plaats van .dot . te gebruiken notatie om het element te vinden, kunt u $arrayElemAt operator die u de mogelijkheid biedt om het gewenste element te kiezen.

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

Of zoals je probeerde te doen

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

U kunt de $expr controleren gedrag hier




  1. 6 cruciale Redis-bewakingsstatistieken die u moet bekijken

  2. Invoegen in array van object MongoDB

  3. Expose MongoDB op Kubernetes met StatefulSets buiten cluster

  4. Velden hernoemen in hash voor meerdere sleutels in Redis