MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Nama bidang FieldPath tidak boleh berisi '.' ketika mencoba menggunakan AGGREGATE

Anda dapat menggunakan kueri di bawah ini

Jika Anda menggunakan $expr maka Anda dapat dengan mudah menggunakan operator agregasi di dalamnya. Jadi Alih-alih menggunakan .dot notasi untuk menemukan elemen, Anda dapat menggunakan $arrayElemAt operator yang memberi Anda fasilitas untuk memilih elemen yang Anda inginkan.

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

Atau cara yang Anda coba lakukan

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

Anda dapat memeriksa $expr perilaku di sini




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. kesulitan menggunakan janji dengan luwak

  2. Bagaimana memproyeksikan apakah bidang itu ada

  3. Cara membatasi penghapusan di MongoDB untuk pengumpulan hubungan

  4. Bagaimana cara pengubah $inc bekerja dengan permintaan bersamaan di mongodb?

  5. Tidak dapat menanyakan mongoDB dengan luwak di node.js