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

mongo $slice kueri membalikkan indeks di luar jangkauan

Ya. Begitulah cara javascript Array.prototype.slice() metode bekerja, yang digunakan secara internal oleh mongodb.

Menurut Spesifikasi Bahasa ECMAScript® ,

Dalam kasus Anda relativeStart is -10 ,k = max((-10+5),0), k = 0; (di mana, 5 adalah panjang larik Anda).

Oleh karena itu k atau skip akan selalu 0 , dalam kasus ini.

Ya, operator proyeksi bekerja seperti itu. Kecuali inclusion atau exclusion secara eksplisit ditentukan dalam parameter proyeksi, seluruh dokumen diambil dengan operator proyeksi seperti $slice ,$elemmatch sedang diterapkan.

db.items.findOne({},{"_id":1,"List": { "$slice": [-10, 3 ] }})

akan kembali:

{ "_id" : ObjectId("542babf265f5de9a0d5c2928"), "List" : [ 1, 2, 3 ] }

Parameter kedua ke findOne() metode not only for simple projection tujuan, bidang tidak diproyeksikan, hanya jika salah satu dari field nama memiliki nilai 0 atau 1 melawan mereka. Jika tidak seluruh dokumen dikembalikan. Jika ada bidang yang memiliki projection operator untuk diterapkan, itu akan applied dan projected .

Mekanisme proyeksi sepertinya terjadi dengan cara di bawah ini, setiap kali $slice operator terlibat.

  • Secara default, semua bidang akan disertakan untuk proyeksi.
  • Secara Default semua bidang yang nilainya diturunkan berdasarkan operator proyeksi, $slice , jika benar , selalu ditampilkan, terlepas dari yang di bawah ini.

Langkah-langkah yang dilakukan untuk pengecualian atau penyertaan.

  • Daftar bidang yang ditentukan dalam parameter proyeksi diakumulasikan dalam urutan yang ditentukan.
  • Hanya untuk bidang pertama yang ditemukan dengan nilai '0' atau '1' :Jika bidang memiliki nilai '0' - maka bidang tersebut dikecualikan, dan semua bidang yang tersisa ditandai untuk disertakan.Jika bidang memiliki '1' - maka bidang tersebut disertakan, dan semua bidang yang tersisa ditandai untuk dikecualikan.
  • Untuk semua kolom berikutnya, kolom tersebut dikecualikan atau disertakan berdasarkan nilainya.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mendapat sub dokumen oleh geoNear - MongoDB

  2. Apa itu aturan pluralisasi Mongoose (Nodejs)?

  3. Mengotomatiskan dan Mengelola MongoDB di Cloud

  4. Saat mengamankan formulir komentar dan titik akhir API terkait, haruskah input disanitasi, divalidasi, dan dikodekan di browser, server, atau keduanya?

  5. Menggunakan MongoDB vs MySQL dengan banyak bidang JSON?