sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDb Deltag i forespørgsel med PHP

Du kan bruge aggregeringspipeline til det

  1. Brug $lookup for at deltage i de to samlinger,
  2. $unwind det resulterende array fra $lookup scene
  3. $match for at udføre regex-søgningen

Hvis du har brug for at udføre regex søg på title af master dokument også, du kan tilføje det til din $or forespørgsel af $match fase, og hvis du ikke ønsker det, så glem ikke at fjerne fra $or-forespørgslen (jeg har tilføjet det).

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

Nu er min php ikke så god, men jeg har alligevel formået at skrive forespørgslen til dig. Ændre/ændre koden i henhold til dit behov.

Sagen er, at jeg gav dig ideen til, hvordan du opnår dette. Håber det hjælper.

Rediger

For at sort og limit , brug $sort og $limit pipeline stadier, det har jeg tilføjet som svar.

Glem ikke at erstatte field_name med det aktuelle felt, du vil sortere resultatet med.




  1. Mongo:Hvordan grupperes efter $uge, men returnerer startdatoen og slutdatoen for hver uge i stedet?

  2. Tæl forekomster i indlejret mongodb-dokument og holdegruppe

  3. Hvordan sortering resulterer i en nodejs - mongodb søgning, men ved at kalde en dynamisk metode

  4. Forbindelsestimeout for mongodb ved hjælp af mongoose