MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDb Join заявка с PHP

Можете да използвате тръбопровод за агрегиране за това

  1. Използвайте $lookup да се присъединят към двете колекции,
  2. $unwind полученият масив от $lookup етап
  3. $match за да извършите търсенето с регулярен израз

Ако трябва да направите regex търсене на title на master документ, можете да добавите това към вашия $or заявка на $match етап и ако не искате това, не забравяйте да премахнете от $or заявката (аз го добавих).

$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);

Моят php не е толкова добър, но все пак успях да напиша заявката за вас. Моля, променете/променете кода според вашите нужди.

Работата е там, че ви дадох идея как да постигнете това. Надявам се, че това помага.

Редактиране

За sort и limit , използвайте $sort и $limit етапи на тръбопровод, добавих това в отговора.

Не забравяйте да замените field_name с действителното поле, с което искате да сортирате резултата.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. как да работите с множество действия и да получите брой с помощта на mongodb?

  2. MongoDB, добавете ново { поле :стойност } в съществуващ вграден документ с нотация с точки на множество нива?

  3. Mongodb find() заявка:връща само уникални стойности (без дубликати)

  4. Редът на полето в MongoDB и позицията на документа се променят след актуализация

  5. използване на akka потоци за преминаване през колекцията на mongo