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

Kueri dokumen tentang elemen array di MongoDB menggunakan Java

Anda memiliki dokumen bersarang dalam kasus ini. Dokumen Anda memiliki bidang Notification yang merupakan larik yang menyimpan beberapa sub-objek dengan bidang url . Untuk mencari di sub-bidang, Anda perlu menggunakan sintaks titik:

BasicDBObject query=new BasicDBObject("Notification.url","www.adf.com");

Namun, ini akan mengembalikan seluruh dokumen dengan seluruh Notification Himpunan. Anda mungkin hanya menginginkan sub-dokumen. Untuk memfilter ini, Anda perlu menggunakan versi dua argumen Collection.find .

BasicDBObject query=new BasicDBObject("Notification.url","www.example.com");
BasicDBObject fields=new BasicDBObject("Notification.$", 1);

DBCursor f = con.coll.find(query, fields);

.$ berarti "hanya entri pertama dari larik ini yang dicocokkan dengan operator-penemu"

Ini masih harus mengembalikan satu dokumen dengan sub-array Notifications , tetapi larik ini hanya boleh berisi entri di mana url == "www.example.com" .

Untuk menelusuri dokumen ini dengan Java, lakukan ini:

BasicDBList notifications = (BasicDBList) f.next().get("Notification"); 
BasicDBObject notification = (BasicDBObject) notifications.get(0);
String url = notification.get("url");

Omong-omong: Saat basis data Anda bertambah, kemungkinan besar Anda akan mengalami masalah kinerja, kecuali jika Anda membuat indeks untuk mempercepat kueri ini:

con.coll.ensureIndex(new BasicDBObject("Notification.url", 1));



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Otentikasi Powershell Mongodb

  2. Ember-data dan MongoDB, cara menangani _id

  3. Bagaimana cara mengizinkan bidang nol saat memperbarui di Mongoose?

  4. Cara menggunakan $in atau $nin dalam agregasi mongo $group $cond

  5. Pembaruan MongoDB Penggunaan Metode Pertama