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

Tổng hợp MongoDB:Tra cứu kép và hợp nhất phản hồi tra cứu thành đối tượng tương ứng

Hãy thử truy vấn này:

db.companies.aggregate([
    { $match: { _id: companyId } },
    { $unwind: "$professionals_customers" },
    {
        $lookup: {
            from: "companies",
            localField: "professionals_customers.company",
            foreignField: "_id",
            as: "professionals_customers.company"
        }
    },
    {
        $lookup: {
            from: "users",
            localField: "professionals_customers.contact",
            foreignField: "_id",
            as: "professionals_customers.contact"
        }
    },
    {
        $addFields: {
            "professionals_customers.company": {
                $arrayElemAt: ["$professionals_customers.company", 0]
            },
            "professionals_customers.contact": {
                $arrayElemAt: ["$professionals_customers.contact", 0]
            }
        }
    },
    {
        $group: { _id: "$_id", professionals_customers: { $push: "$professionals_customers" }, data: { $first: "$$ROOT" } }
    },
    { $addFields: { "data.professionals_customers": "$professionals_customers" } },
    { $replaceRoot: { newRoot: "$data" } }
])

Kiểm tra: MongoDB-Playground

Lưu ý: Nếu cần, bạn cần chuyển đổi các trường / đầu vào thuộc loại chuỗi thành ObjectId () . Điều cơ bản là bạn cần kiểm tra loại của hai trường đang được so sánh hoặc nhập-vào-trường-trong-DB có trùng khớp hay không.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách sao lưu và khôi phục ClusterControl

  2. Không thể cập nhật dữ liệu trong mongodb

  3. Mongoose - xóa nhiều tài liệu trong một lệnh gọi hàm

  4. Mongoid 3 - truy cập kết quả map_reduce

  5. Lỗi:kết nối ETIMEDOUT khi cạo