mongodb php - how to do “INNER JOIN”-like query

后端 未结 5 604
挽巷
挽巷 2020-12-09 06:13

I\'m using the Mongo PHP extension.

My data looks like:

users
{
  \"_id\": \"4ca30369fd0e910ecc000006\",
  \"login\": \"user11\",
  \"pass\": \"examp         


        
5条回答
  •  执笔经年
    2020-12-09 06:55

    If you are using the new version of MongoDB (3.2), then you would get something similar with the $lookup operator.

    The drawbacks with using this operator are that it is highly inefficient when run over large result sets and it only supports equality for the match where the equality has to be between a single key from each collection. The other limitation is that the right-collection should be an unsharded collection in the same database as the left-collection.

    The following aggregation operation on the news collection joins the documents from news with the documents from the users collection using the fields user_id from the news collection and the _id field from the users collection:

    db.news.aggregate([
        {
            "$lookup": {
                "from": "users",
                "localField": "user_id",
                "foreignField": "_id",
                "as": "user_docs"
            }
       }
    ])
    

    The equivalent PHP example implementation:

    selectDB("test")->selectCollection("news");
    $ops = array(
        array(
            "$lookup" => array(
                "from" => "users",
                "localField" => "user_id",
                "foreignField" => "_id",
                "as" => "user_docs"
            )
        )
    );
    $results = $c->aggregate($ops);
    var_dump($results);
    ?>
    

提交回复
热议问题