MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách tham gia nhiều bộ sưu tập với $ lookup trong mongodb

Tính năng tham gia được hỗ trợ bởi Mongodb 3.2 và các phiên bản mới hơn. Bạn có thể sử dụng liên kết bằng cách sử dụng tổng hợp truy vấn.
Bạn có thể làm điều đó bằng cách sử dụng ví dụ dưới đây:

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",
        } 
    }
]);

Điều này sẽ cho kết quả như thế này:

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

Hy vọng điều này sẽ giúp ích cho bạn hoặc ai đó.

Cảm ơn



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không muốn bắt đầu mongod bằng `sudo mongod`

  2. Sàn MongoDB $

  3. Mongorestore có thể lấy một đối số url duy nhất thay vì các đối số riêng biệt không?

  4. Làm cách nào để sắp xếp mảng bên trong bản ghi bộ sưu tập trong MongoDB?

  5. id đối tượng nodejs mongodb thành chuỗi