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

Kueri array bersarang MongoDB

Setelah menjalankan beberapa kueri, saya sampai pada kesimpulan bahwa $in tidak berfungsi untuk larik larik .

Anda dapat menggunakan $elemMatch sebagai gantinya dan itu akan berhasil, tetapi membuat frustrasi karena dokumentasi MongoDB tidak memperingatkannya.

Saya membuat dokumen ini:

{
      "_id": "51cb12857124a215940cf2d4",
      "level1": [
        [
          "item00",
          "item01"
        ],
        [
          "item10",
          "item11"
        ]
      ],
      "items": [
        "item20",
        "item21"
      ]
}

Perhatikan bahwa bidang "item" adalah larik string dan kueri ini berfungsi dengan baik:

db.nested.findOne({"items":{"$in":["item20"]} })

Sekarang, "level1.0" juga merupakan larik string, satu-satunya perbedaan adalah ia berada di dalam larik lain. Kueri ini seharusnya berfungsi tetapi tidak:

db.nested.findOne({"level1.0":{"$in":["item00"]} })

Satu-satunya cara untuk mendapatkan hasilnya adalah menggunakan $elemMatch:

db.nested.findOne({"level1":{"$elemMatch":{"$in":['item00']}} })

Jadi $elemMatch memecahkan masalah, tetapi solusi sebenarnya adalah memperbarui dokumentasi MongoDB untuk menyatakan bahwa $in tidak berfungsi untuk array array. Mungkin Anda harus mengajukan permintaan ke 10gen.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat memulai MongoDB. KESALAHAN:addr sudah digunakan

  2. Cara Mengembalikan Koleksi Tertentu di MongoDB Menggunakan Logical Backup

  3. Apakah mungkin untuk mendapatkan bidang dalam urutan proyeksi di agregasi Kerangka mongo

  4. Kembalikan sejumlah catatan terbatas dari jenis tertentu, tetapi jumlah catatan lain yang tidak terbatas?

  5. Bisakah mongodb digunakan sebagai basis data tertanam?