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

Nếu Mongo $ lookup là một kết hợp bên ngoài bên trái, thì tại sao nó lại loại trừ các tài liệu không phù hợp?

Hành vi này không liên quan đến $lookup , đó là do hành vi mặc định cho $unwind là bỏ qua các tài liệu thiếu trường được tham chiếu hoặc một mảng trống.

Để bảo quản các tài liệu chưa ràng buộc ngay cả khi profile.universities là một mảng trống, bạn có thể đặt preserveNullAndEmptyArrays của nó tùy chọn thành true :

db.users.aggregate([
    {
        $unwind: "$profile",
        $unwind: {
            path: "$profile.universities",
            preserveNullAndEmptyArrays: true
        }
    },
    {
        $lookup: {
            from: "universities",
            localField: "profile.universities._id",
            foreignField: "_id",
            as: "profile.universities"
        }
    },
    {
        $group: {
            _id: "$_id",
            universities: {
                $addToSet: "$profile.universities"
            }
        }
    }
]).pretty()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb - truy vấn không hợp lệ:Toán tử cấp cao nhất không xác định BadValue:$ gte

  2. Khi nào sử dụng CouchDB trên MongoDB và ngược lại

  3. Nhận số lượng mục với trình tạo truy vấn trình điều khiển MongoDB C #

  4. Khắc phục “kinh độ / vĩ độ nằm ngoài giới hạn” trong MongoDB khi tạo Chỉ mục 2dsphere

  5. Sử dụng tổng hợp Mongo để tính tổng các giá trị