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

Cara mencari sub array di MongoDB

Jika Anda hanya menginginkan satu bidang maka MongoDB memiliki "notasi titik" untuk mengakses elemen bersarang:

db.collection.find({ "to.email": "[email protected]" })

Dan ini akan mengembalikan dokumen yang cocok:

Untuk lebih satu bidang itu sebagai syarat, gunakan $elemMatch operator

db.collection.find(
    { "to": { 
        "$elemMatch": { 
            "email": "[email protected]",
            "name": "domains",
        }
    }}
)

Dan Anda dapat "memproyeksikan" tunggal cocok untuk hanya mengembalikan elemen itu:

db.collection.find({ "to.email": "[email protected]" },{ "to.$": 1 })

Namun jika Anda mengharapkan lebih dari satu elemen untuk dicocokkan, maka Anda menggunakan kerangka kerja agregasi:

db.collection.aggregate([
    // Matches the "documents" that contain this
    { "$match": { "to.email": "[email protected]" } },

    // De-normalizes the array
    { "$unwind": "$to" },

    // Matches only those elements that match
    { "$match": { "to.email": "[email protected]" } },

    // Maybe even group back to a singular document
    { "$group": {
        "_id": "$_id",
        "from_name": { "$first": "$name" },
        "to": { "$push": "$to" },
        "subject": { "$first": "$subject" }            
    }}

])

Semua cara menyenangkan untuk mencocokkan dan/atau "memfilter" konten larik agar cocok jika diperlukan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menjalankan db.repairDatabase() dari mongodb-native di node.js

  2. Bagaimana cara mendapatkan data dari Mongodb

  3. Kinerja insert massal di MongoDB untuk koleksi besar

  4. lebih dari satu indeks 2dsphere, tidak yakin mana yang harus dijalankan geoNear

  5. Flask-PyMongo colMod