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

Ubah urutan properti yang ditampilkan di MongoDB

Pertanyaan dan jawaban di atas sudah cukup lama. Bagaimanapun, jika seseorang mengunjungi ini, saya merasa harus menambahkan:

Jawaban ini sepenuhnya salah. Sebenarnya di Dokumen Mongo ADALAH pasangan kunci-nilai yang dipesan. Namun ketika menggunakan pymongo itu akan menggunakan python dicts untuk dokumen yang memang tidak dipesan (pada cpython 3.6 python dicts mempertahankan pesanan, namun ini dianggap sebagai detail implementasi). Tapi ini adalah batasan dari driver pymongo.

Ketahuilah, bahwa batasan ini sebenarnya memengaruhi kegunaan. Jika Anda menanyakan db untuk subdokumen, itu hanya akan cocok jika urutan pasangan nilai kunci benar.

Coba saja sendiri kode berikut:

from pymongo import MongoClient
db = MongoClient().testdb
col = db.testcol
subdoc = {
   'field1': 1,
   'field2': 2,
   'filed3': 3
}
document = {
   'subdoc': subdoc
}
col.insert_one(document)
print(col.find({'subdoc': subdoc}).count())

Setiap kali kode ini dieksekusi, dokumen 'sama' ditambahkan ke koleksi. Jadi, setiap kali kami menjalankan cuplikan kode ini, nilai yang dicetak 'harus' bertambah satu. Itu bukan karena hanya menemukan subdokumen maches dengan urutan yang benar tetapi perintah python hanya memasukkan subdokumen dalam urutan yang berubah-ubah.

lihat jawaban berikut cara menggunakan dict yang dipesan untuk mengatasi ini:https://stackoverflow.com/a/30787769/4273834



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongorestore, dari server produksi meteor ke lokal

  2. Mode Impor mongoimport

  3. mongod HostnameCanonicalizationWorker error pada OS X

  4. Langkah-langkah untuk menghubungkan MongoDB dan Solr menggunakan DataImportHandler

  5. mongodb - Temukan dokumen dengan nilai integer terdekat