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

Apakah mungkin untuk mengganti dividen dan pembagi dari operator kueri $mod MongoDB?

.find reguler kueri dengan $mod operator tidak akan berfungsi di sini, tetapi Anda tetap dapat melakukannya menggunakan kerangka kerja agregasi dan $redact operator dan $mod operator agregasi aritmatika.

Misalkan kita memiliki dokumen berikut dalam koleksi kita:

{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 },
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 },
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 },
{ "_id" : ObjectId("573f63504c01ce47a183a636"), "a" : 24 }

Kueri berikut mengembalikan semua dokumen di mana 60 modulo nilai bidang a sama dengan 0 .

db.collection.aggregate([
    { "$redact": { 
        "$cond": [ 
            { "$eq": [ {"$mod": [ 60, "$a" ] }, 0 ] }, 
            "$$KEEP", 
            "$$PRUNE"
        ]
    }}
])

yang menghasilkan:

{ "_id" : ObjectId("573f624b4c01ce47a183a632"), "a" : 4 }
{ "_id" : ObjectId("573f63494c01ce47a183a634"), "a" : 12 }
{ "_id" : ObjectId("573f63504c01ce47a183a635"), "a" : 6 }

Cara lain yang mungkin kurang efisien untuk melakukannya, adalah dengan menggunakan $where operator.

db.collection.find("60 % this.a === 0")



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menjalankan perintah pencarian teks lengkap di MongoDB dengan Java Driver?

  2. Mongo massal menemukan dan memperbarui bidang dokumen yang cocok dalam satu permintaan?

  3. Mongo mengonversi semua bidang numerik yang disimpan sebagai string

  4. TypeError:objek bukan fungsi dalam menggunakan MongoDB dengan Node.js

  5. Luwak dengan ReplicaSet di Atlas