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

Mongodbアグリゲーション:$reduceが期待どおりに機能しない

    • $max keyから最大値を取得するには フィールドの配列a 、これは-15を返します あなたの文書に従って
    • $filter -15に等しいオブジェクトを取得します 値
    • $first $filterから返された結果から最初のオブジェクトを取得します
    db.collection.aggregate([
      {
        $addFields: {
          winner: {
            $first: {
              $filter: {
                input: "$key",
                cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
              }
            }
          }
        }
      }
    ])
    

    遊び場

    $reduceを使用する2番目のオプション オペレーター、

    • 初期フィールドmaxValueを設定します 削減では、keyからの最大値 フィールドの配列a
    • maxValueの場合は条件を確認します およびa 値が一致し、最大オブジェクトを返します
    db.collection.aggregate([
      {
        $addFields: {
          winner: {
            $reduce: {
              input: "$key",
              initialValue: { maxValue: { $max: "$key.a" } },
              in: {
                $cond: [
                  { $eq: ["$$this.a", "$$value.maxValue"] },
                  "$$this",
                  "$$value"
                ]
              }
            }
          }
        }
      }
    ])
    

    遊び場




    1. マングース:深い個体群(個体群の多いフィールドに生息する)

    2. MongoDB:ドキュメントのIDを公開して使用しても安全ですか?

    3. System.TypeをMongoDbで保存する

    4. Mongooseを使用してインデックスを削除するための推奨される方法は何ですか?