sql >> データベース >  >> NoSQL >> MongoDB

MongoDB Aggregation:ダブルルックアップ、およびルックアップ応答をそれぞれのオブジェクトにマージ

    このクエリを試してください:

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

    テスト: MongoDB-Playground

    注: 必要に応じて、文字列タイプのフィールド/入力を変換する必要があります ObjectId() 。基本的なことは、比較されている2つのフィールドのタイプ、またはDB内のフィールドへの入力が一致しているかどうかを確認する必要があることです。




    1. EntityFrameworkとMongoDb

    2. Mongoの$pull複数オブジェクトが機能しない

    3. 起動時にMongoDBコンテナ用のDBを作成するにはどうすればよいですか?

    4. MongoDBの長所と短所は?