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

MongoDBのオブジェクト値に関連する情報を取得します

    • $arrayElemAt dicから最初の要素を取得する 配列
    • $objectToArray Aを変換する 配列へのオブジェクト
    • $reduce 変換された配列の上の要素のループを繰り返し、_id.Aかどうかの条件を確認します データAと一致します 次に、特定のフィールドを返します。
    • Bに対して同じプロセスを実行します およびC
    db.collection.aggregate([
      {
        $addFields: {
          dic: { $arrayElemAt: ["$dic", 0] }
        }
      },
      {
        $project: {
          _id: 1,
          dic: {
            A: {
              $reduce: {
                input: { $objectToArray: "$dic.data.A" },
                initialValue: "Not Found",
                in: {
                  $cond: [
                    { $eq: ["$$this.k", "$_id.A"] },
                    "$$this.v.name",
                    "$$value"
                  ]
                }
              }
            },
            B: {
              $reduce: {
                input: { $objectToArray: "$dic.data.B" },
                initialValue: "Not Found",
                in: {
                  $cond: [
                    { $eq: ["$$this.k", "$_id.B"] },
                    "$$this.v.description",
                    "$$value"
                  ]
                }
              }
            },
            C: {
              $reduce: {
                input: { $objectToArray: "$dic.data.C" },
                initialValue: "Not Found",
                in: {
                  $cond: [
                    { $eq: ["$$this.k", "$_id.C"] },
                    "$$this.v.description",
                    "$$value"
                  ]
                }
              }
            }
          }
        }
      }
    ])
    

    遊び場




    1. MongoDBの配列内のアイテムの1つのインスタンスをプルする方法は?

    2. 高速書き込みの一時的な行ストレージソリューションのためのMongoDB対Redis対Cassandra

    3. 画像ファイルをマングーススキーマのバイナリデータに保存し、画像をhtml形式で表示する

    4. SpringDataRESTアプリケーションがRedisキャッシングを実装した後にデータベースからデータを取得しない