MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Nazwy pól FieldPath nie mogą zawierać „.” podczas próby użycia AGREGATE

Możesz użyć poniższego zapytania

Jeśli używasz $expr wtedy możesz łatwo użyć w nim operatora agregacji. Więc zamiast używać .dot notacji, aby znaleźć element, możesz użyć $arrayElemAt operatora, który zapewnia możliwość wyboru elementu, który chcesz.

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

Albo sposób, w jaki próbowałeś zrobić

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

Możesz sprawdzić $expr zachowanie tutaj




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. wykonać tylko jedno z wielu zduplikowanych zadań za pomocą sidekiq?

  2. Wyjaśnij strukturę agregacji

  3. mangusta:sprawdź, czy wstawiony dokument jest duplikatem, a jeśli tak, zwróć istniejący dokument

  4. Aktualizacja kolekcji MongoDB:zainicjuj dokument z wartościami domyślnymi

  5. MongoDB na platformie Azure:jak wybrać odpowiedni typ wystąpienia?