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

Mongodb embed struktur memperbarui dan mencari?

  1. Kesalahan sintaks adalah karena Anda harus menggunakan tanda kutip di sekitar services.port_info
  2. Namun, $elemMatch di kolom bertingkat saat ini tidak didukung tetap saja
  3. Untungnya, Anda tidak perlu $elemMatch untuk kueri semacam ini

Ini harus dilakukan:

db.hosts.find({ ip : "127.0.0.1"}, { "services.port_info.product" : "ssh" });

$elemMatch diperlukan jika Anda ingin mencocokkan beberapa kriteria di dalam objek array, misalnya "temukan semua di mana port adalah 9000 dan protokolnya adalah UDP". Itu tidak akan didukung dengan struktur data Anda. Saya tidak yakin mengapa port_info adalah array objek (mungkin untuk situasi yang tidak pasti di mana port dapat dimiliki oleh dua layanan yang berbeda?) - jika itu adalah objek tunggal, bahkan $elemMatch akan didukung.

Juga, perlu diingat bahwa kueri seperti itu akan selalu mengembalikan seluruh objek.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoTemplate cara menambahkan lebih dari dua atauOperator di Query

  2. Mongodb:mengembalikan filter yang cocok saat menggunakan $atau di find()

  3. Siapkan konverter khusus di Spring Data Mongo

  4. Apakah mongodump mengunci database?

  5. 'autoIndexID' bukan opsi pengumpulan yang valid - mongoDB