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

Mongodb tra cứu mảng các phần tử với kết quả kết hợp

Bạn cần chạy ánh xạ đó bên ngoài $lookup bằng cách chạy $ map cùng với $ arrayElemAt để nhận một cặp từ cả hai mảng và sau đó áp dụng $ mergeObjects để nhận được một đối tượng là kết quả:

db.Order.aggregate([
    {
        $lookup: {
            from: "products",
            localField: "context.products.id",
            foreignField: "_id",
            as: "productDetails"
        }
    },
    {
        $addFields: {
            productDetails: {
                $map: {
                    input: "$productDetails",
                    in: {
                        _id: "$$this._id",
                        name: "$$this.context.name"
                    }
                }
            }
        }
    },
    {
        $project: {
            _id: 1,
            "context.products": {
                $map: {
                    input: "$context.products",
                    as: "prod",
                    in: {
                        $mergeObjects: [
                            "$$prod",
                            { $arrayElemAt: [ { $filter: { input: "$productDetails", cond: { $eq: [ "$$this._id", "$$prod.id" ] } } }, 0 ] }
                        ]
                    }
                }
            }
        }
    }
])

Sân chơi Mongo

Mục tiêu của bước cuối cùng là thực hiện hai mảng:productsproductDetails (kết quả của $lookup ) và tìm các kết quả phù hợp giữa chúng. Chúng tôi biết rằng luôn có một kết quả phù hợp nên chúng tôi chỉ có thể nhận được một mục $arrayElemAt 0 . Là đầu ra của $map sẽ có một mảng chứa các tài liệu "đã hợp nhất".




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sao chép có chọn lọc trong mongodb

  2. Tìm kiếm tất cả các đa giác có chứa một loạt điểm trong mongodb

  3. MongoError:Việc triển khai MongoDB này không hỗ trợ ghi có thể thử lại. Vui lòng thêm retryWrites =false vào chuỗi kết nối của bạn

  4. tôi gặp lỗi sau khi kết nối với máy chủ mongodb

  5. Lọc Năm tháng từ tài liệu Mongo