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

Permintaan Mongodb bulan tertentu | tahun bukan tanggal

Dengan MongoDB 3.6 dan yang lebih baru, Anda dapat menggunakan $expr operator di find() . Anda pertanyaan. Ini memungkinkan Anda membuat ekspresi kueri yang membandingkan bidang dari dokumen yang sama dalam $match panggung.

db.customer.find({ "$expr": { "$eq": [{ "$month": "$bday" }, 9] } })

Untuk versi MongoDB lainnya, pertimbangkan untuk menjalankan pipa agregasi yang menggunakan $redact operator karena memungkinkan Anda untuk menggabungkan dengan satu saluran, sebuah fungsi dengan $project untuk membuat bidang yang mewakili bulan bidang tanggal dan $match untuk menyaring dokumen yang sesuai dengan kondisi bulan yang diberikan September.

Di atas, $redact menggunakan $cond operator tenary sebagai sarana untuk memberikan ekspresi kondisional yang akan membuat variabel sistem yang melakukan redaksi. Ekspresi logis dalam $cond akan memeriksa kesetaraan bidang operator tanggal dengan nilai yang diberikan, jika cocok maka $redact akan mengembalikan dokumen menggunakan $$KEEP variabel sistem dan membuang sebaliknya menggunakan $$PRUNE .

Menjalankan pipeline berikut akan memberi Anda hasil yang diinginkan:

db.customer.aggregate([
    { "$match": { "bday": { "$exists": true } } },
    {
        "$redact": {
            "$cond": [
                { "$eq": [{ "$month": "$bday" }, 9] },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    }
])

Ini mirip dengan $project +$match kombo tetapi Anda harus memilih semua bidang lainnya yang masuk ke dalam pipeline:

db.customer.aggregate([
    { "$match": { "bday": { "$exists": true } } },
    {
        "$project": {
            "month": { "$month": "$bday" },
            "bday": 1,
            "field1": 1,
            "field2": 1,
            .....
        }
    },
    { "$match": { "month": 9 } }
])

Dengan alternatif lain, meskipun kueri lambat, menggunakan find() metode dengan $where sebagai:

db.customer.find({ "$where": "this.bday.getMonth() === 8" })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. menggunakan string untuk mongodb _id

  2. MongoDB findOneAndDelete()

  3. MongoDB mengurutkan dokumen berdasarkan elemen array

  4. MongoDB $rand

  5. Migrasi MongoDB ke DynamoDB, Bagian 1