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

Cara memilih subdokumen dengan MongoDB

Agak terlambat ke pesta, tapi semoga bisa membantu orang lain yang sedang mencari solusi. Saya telah menemukan cara untuk melakukan ini menggunakan kerangka kerja agregasi dan menggabungkan $project dan $unwind dengan $match, dengan menyatukannya. Saya sudah melakukannya menggunakan PHP tetapi Anda harus mendapatkan intinya:

    $ops = array(
        array('$match' => array(
                'collectionColumn' => 'value',
            )
        ),
        array('$project' => array(
                'collection.subcollection' => 1
            )
        ),
        array('$unwind' => '$subCollection'),
        array('$match' => array(
                subCollection.subColumn => 'subColumnValue'
            )
        )
    );

Pertandingan dan proyek pertama hanya digunakan untuk menyaring agar lebih cepat, kemudian pelepasan pada subkoleksi mengeluarkan setiap subkoleksi item demi item yang kemudian dapat disaring menggunakan pencocokan terakhir.

Semoga membantu.

PEMBARUAN (dari Ryan Wheale):

Anda kemudian dapat $group data kembali ke struktur aslinya. Ini seperti memiliki $elemMatch yang mengembalikan lebih dari satu subdokumen:

array('$group' => array(
        '_id' => '$_id',
        'subcollection' => array(
            '$push' => '$subcollection'
        )
    )
);

Saya menerjemahkan ini dari Node ke PHP, jadi saya belum mengujinya di PHP. Jika ada yang menginginkan versi Node, tinggalkan komentar di bawah dan saya akan membantu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js, Mongo menemukan dan mengembalikan data

  2. MongoDB - Perbarui atau Sisipkan objek dalam array

  3. MongoDB 2.1 Kerangka Agregat Jumlah Elemen Array yang cocok dengan nama

  4. pembuatan skema luwak

  5. Bagaimana Memastikan Cluster MongoDB Anda Dapat Bertahan dari Pemadaman Amazon AWS?