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

mongodbaggregateでnull値を回避して$lookupする方法

    $inを使用しないことでそれを回避できます 。

    この$mapのように見えます items内のドキュメントごとに個別に実行されます コレクション。 $addFieldsでマップを実行する場合 ステージでは、単純な形式のルックアップを使用して、追加されたフィールドを_idに一致させることができます。 、欠落しているnullを自動的に処理します 、および配列。

    $projectで追加されたフィールドを削除します 必要に応じてステージングします。

    db.case.aggregate([
        {$lookup: {
            from: "insurance",
            let: { ipids: "$sale.bill.insurancePlanId" },
            pipeline: [
                {$unwind: "$coveragePlans"},
                {$match: { $expr: { $in: ["$coveragePlans._id", "$$ipids"] } }},
                {$project: { _id: 0, name: 1 }}
            ],
            as: "insurances"
        }}
        {$addFields:{
            matchArray:{$map: {
                           input: "$$iid",
                           in: { $toObjectId: "$$this" }
            }}
        }},
        {$lookup: {
            from: "item",
            localField: "matchArray",
            foreignField:"_id",
            as: "items"
        }},
        {$project:{
            arrayField: 0 
        }}
    ])
    


    1. Django認証Mongodb

    2. Docker Composeを使用してRedisコンテナに接続するにはどうすればよいですか?

    3. 生のMongoDBクエリをRubyで直接起動する方法

    4. MongoDB Aggregation Framework-日付範囲で照合し、日でグループ化し、各日の平均を返す方法は?