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

$proyeksi vs $elemMatch

Perbedaan dalam penggunaan proyeksi agak halus. Dalam contoh penggunaan Anda, ini harus berupa kueri yang setara (dalam hal penggunaan indeks) tetapi $elemMatch contoh tidak perlu mengulangi kriteria kueri. $ proyeksi akan menjadi pilihan yang lebih masuk akal untuk contoh ini.

Perbedaan penting yang dicatat dalam dokumentasi adalah array batasan bidang untuk $ proyeksi:

Beberapa catatan lebih lanjut tentang perbedaan operator proyeksi di bawah ini ...

The posisional ($ ) operator proyeksi :

  • membatasi konten bidang larik yang disertakan dalam hasil kueri agar berisi elemen pertama yang cocok dengan dokumen kueri.

  • mengharuskan bidang larik yang cocok disertakan dalam kriteria kueri

  • hanya dapat digunakan jika satu bidang larik muncul dalam kriteria kueri

  • hanya dapat digunakan sekali dalam proyeksi

The $elemMatch operator proyeksi

  • membatasi konten bidang larik yang disertakan dalam hasil kueri agar hanya berisi elemen larik pertama yang cocok dengan kondisi $elemMatch .

  • tidak memerlukan larik yang cocok dalam kriteria kueri

  • dapat digunakan untuk mencocokkan beberapa kondisi untuk elemen array yang merupakan dokumen yang disematkan

The $elemMatch operator kueri

Perhatikan bahwa ada juga $elemMatch operator kueri yang melakukan pencocokan serupa, tetapi dalam kueri daripada proyeksi hasil. Tidak jarang melihat ini digunakan dalam kombinasi dengan $ proyeksi.

Meminjam contoh dari dokumen di mana Anda dapat menggunakan keduanya:

db.students.find(
    // use $elemMatch query operator to match multiple criteria in the grades array
    { grades: {
        $elemMatch: {
            mean:  { $gt: 70 },
            grade: { $gt: 90 }
        }
    }},

    // use $ projection to get the first matching item in the "grades" array
    { "grades.$": 1 }
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat terhubung ke gambar buruh pelabuhan mongo dengan luwak

  2. Tidak dapat membuat mongodump cadangan dengan --db. Otentikasi gagal

  3. Mongo memberikan kesalahan kunci duplikat pada bidang _id_ di aplikasi Meteor

  4. Ubah tanggal String ke tanggal ISO di MongoDB?

  5. luwak - metode 'simpan' tidak ada