MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDb Dołącz do zapytania z PHP

Możesz do tego użyć potoku agregacji

  1. Użyj $lookup dołączyć do dwóch kolekcji,
  2. $unwind wynikowa tablica z $lookup scena
  3. $match zrobić wyszukiwanie wyrażeń regularnych

Jeśli potrzebujesz wykonać regex wyszukaj title master również dokument, możesz dodać go do swojego $or zapytanie $match etapie, a jeśli tego nie chcesz, nie zapomnij usunąć z zapytania $lub (dodałem go).

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

Teraz mój php nie jest taki świetny, mimo to udało mi się napisać dla ciebie zapytanie. Proszę zmienić/zmodyfikować kod w zależności od potrzeb.

Chodzi o to, że dałem ci pomysł, jak to osiągnąć. Mam nadzieję, że to pomoże.

Edytuj

Aby sort i limit , użyj $sort i $limit etapy potoku, dodałem to w odpowiedzi.

Nie zapomnij zastąpić field_name z rzeczywistym polem, według którego chcesz posortować wynik.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. zapytanie w mongo Shell daje SyntaxError:missing :after property

  2. Jak serializować pola chrono::DateTime jako ISODate podczas używania prototypu sterownika Rust Mongo?

  3. MongoDB:Sortuj według indeksu tablicy

  4. Rails Mongoid nie może się uwierzytelnić - błąd 13:brak autoryzacji dla zapytania w my_db.my_collection

  5. MongoDB:$lub wyszukiwanie pełnotekstowe i $in