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

Jak dołączyć do wielu kolekcji za pomocą $lookup w mongodb

Funkcja dołączania obsługiwana przez Mongodb 3.2 i nowsze wersje. Możesz użyć złączeń, używając agregacji zapytanie.
Możesz to zrobić, korzystając z poniższego przykładu:

db.users.aggregate([

    // Join with user_info table
    {
        $lookup:{
            from: "userinfo",       // other table name
            localField: "userId",   // name of users table field
            foreignField: "userId", // name of userinfo table field
            as: "user_info"         // alias for userinfo table
        }
    },
    {   $unwind:"$user_info" },     // $unwind used for getting data in object or for one record only

    // Join with user_role table
    {
        $lookup:{
            from: "userrole", 
            localField: "userId", 
            foreignField: "userId",
            as: "user_role"
        }
    },
    {   $unwind:"$user_role" },

    // define some conditions here 
    {
        $match:{
            $and:[{"userName" : "admin"}]
        }
    },

    // define which fields are you want to fetch
    {   
        $project:{
            _id : 1,
            email : 1,
            userName : 1,
            userPhone : "$user_info.phone",
            role : "$user_role.role",
        } 
    }
]);

To da taki wynik:

{
    "_id" : ObjectId("5684f3c454b1fd6926c324fd"),
    "email" : "[email protected]",
    "userName" : "admin",
    "userPhone" : "0000000000",
    "role" : "admin"
}

Mam nadzieję, że to pomoże Tobie lub komuś innemu.

Dzięki



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak uruchomić powłokę mongodb w kontenerze docker?

  2. MongoDB:upsert sub-dokument

  3. MongoDB — upuść kolekcję

  4. Jak wysyłać zapytania z Mongoose pre hook w aplikacji Node.js / Express?

  5. Jak połączyć się z MongoDB w systemie Windows?