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

MongoDB:Menggunakan kecocokan dengan variabel dokumen input

Apakah ini berarti jika Anda menggunakan variabel input dalam $lookuppipeline, Anda harus menggunakan $expr

Ya benar, secara default di filter yaitu; di bagian filter .find() atau di $match tahap agregasi Anda tidak dapat menggunakan bidang yang ada di dokumen.

Jika sama sekali jika Anda perlu menggunakan nilai bidang yang ada di filter kueri Anda, maka Anda perlu menggunakan pipa agregasi, Jadi untuk menggunakan pipa agregasi di .find() atau di $match Anda perlu membungkus kueri filter Anda dengan $expr. Cara yang sama untuk mengakses variabel lokal dibuat menggunakan let dari $lookup filter di $match perlu dibungkus dengan $expr .

Mari kita perhatikan contoh di bawah ini :

Contoh Dokumen :

[
  {
    "key": 1,
    "value": 2
  },
  {
    "key": 2,
    "value": 4
  },
  {
    "key": 5,
    "value": 5
  }
]

Kueri :

 db.collection.find({ key: { $gt: 1 }, value: { $gt: 4 } })

    Or

 db.collection.aggregate([ { $match: { key: { $gt: 1 }, value: { $gt: 4 } } } ])

Uji: taman bermain mongo

Jika Anda melihat kueri di atas, keduanya masukkan 1 &4 diteruskan ke kueri tetapi Anda memeriksa kueri di bawah tempat Anda mencoba mencocokkan key bidang ==value bidang - tidak berfungsi :

db.collection.aggregate([ { $match: { key: { $eq: "$value" } } } ])

Uji: taman bermain mongo

Di atas saat Anda membandingkan dua bidang yang ada maka Anda tidak dapat melakukannya karena itu berarti Anda memeriksa dokumen dengan key nilai bidang sebagai string "$value" . Jadi untuk mengatakan itu bukan string, itu sebenarnya referensi ke value bidang Anda perlu menggunakan operator agregasi $eq daripada operator kueri $eq seperti di bawah ini :

 db.collection.aggregate([ { $match: { $expr: { $eq: [ "$key", "$value" ] } } } ])

Uji: taman bermain mongo



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara memeriksa apakah indeks sedang digunakan?

  2. Proyeksi MongoDB dari Array Bersarang

  3. mongodb - buat dokumen jika tidak ada, jika tidak tekan ke array

  4. Penjelasan MongoDB Upsert

  5. Bagaimana melakukan Pencarian Teks Lengkap di MongoDB