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

MongoDb Gabung kueri dengan PHP

Anda dapat menggunakan pipa agregasi untuk itu

  1. Gunakan $lookup untuk bergabung dengan dua koleksi,
  2. $unwind array yang dihasilkan dari $lookup panggung
  3. $match untuk melakukan pencarian regex

Jika Anda perlu melakukan regex cari di title dari master dokumen juga, Anda dapat menambahkannya ke $or . Anda kueri $match stage, dan jika Anda tidak menginginkannya, jangan lupa untuk menghapus dari $or query (saya telah menambahkannya).

$pipeline = array(
    array(
        '$lookup' => array(
            'from' => 'masters',
            'localField' => '$master_id',
            'foreignField' => '$_id',
            'as' => 'master'
        )
    ),
    array(
        '$unwind' => Array(
            'path' => '$master',
            'preserveNullAndEmptyArrays' => true
         ) 
    ),
    array(
        '$match' => array(
            '$or' => array(
                array(
                    'title' => new \MongoDB\BSON\Regex($queryString),
                ),
                array(
                    'description' => new \MongoDB\BSON\Regex($queryString),
                ),
                array(
                    'master.title' => new \MongoDB\BSON\Regex($queryString),
                ),
            )
        )
    ),
    array(
        '$sort' => array(
            'field_name' => 1
        )
    ),
    array(
        '$limit' => 10
    )
)

$results = $details->aggregate($pipeline);

Sekarang, php saya tidak terlalu bagus, saya masih berhasil menulis kueri untuk Anda. Silahkan ubah/modifikasi kode tersebut sesuai dengan kebutuhan Anda.

Masalahnya adalah saya memberi Anda ide tentang bagaimana mencapai ini. Semoga membantu.

Sunting

Untuk sort , dan limit , gunakan $sort dan $limit tahapan pipa, saya telah menambahkannya sebagai jawaban.

Jangan lupa ganti field_name dengan bidang aktual yang ingin Anda urutkan hasilnya.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menjalankan perintah sekali dalam penulisan Docker

  2. Data null setelah menyimpan entitas dengan Moongose ​​dan GraphQL

  3. Apakah ada cara untuk memproyeksikan jenis bidang

  4. Bagaimana cara menghapus hanya satu atau dua bidang dari dokumen di mongodb?

  5. Bagaimana cara membuat umpan file dari orang-orang yang diikuti pengguna?