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

MongoGroupと2つのフィールドの合計

    で交換されるメールの数を計算する必要があるため 2つのアドレス、統一されたbetweenを投影するのは公平です 次のようなフィールド:

    db.a.aggregate([
        { $match: {
            to: { $exists: true },
            from: { $exists: true },
            email: { $exists: true }
        }}, 
        { $project: {
            between: { $cond: { 
                if: { $lte: [ { $strcasecmp: [ "$to", "$from" ] }, 0 ] }, 
                then: [ { $toLower: "$to" }, { $toLower: "$from" } ], 
                else: [ { $toLower: "$from" }, { $toLower: "$to" } ] }
            } 
        }},
        { $group: {
             "_id": "$between",
             "count": { $sum: 1 } 
        }},
        { $sort :{ count: -1 } }
    ])
    

    統合ロジックは、例から非常に明確である必要があります。これは、アルファベット順にソートされた両方の電子メールの配列です。 $match および$toLower データを信頼する場合、パーツはオプションです。

    例で使用されている演算子のドキュメント:



    1. MongoDB:単一のマシンでのシャーディング。それは意味がありますか?

    2. AdminBro、express、mongoDB、mongooseを使用して5分で管理エリアを作成する

    3. Golang + MongoDB埋め込み型(構造体を別の構造体に埋め込む)

    4. mongodbのサブドキュメントを更新しますか?