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

条件付きでグループ化してカウント

    必要なのは$condです 集約フレームワークのオペレーター。欲しいものを手に入れる1つの方法は次のとおりです:

    db.foo.aggregate([
        {
            $project: {
                item: 1,
                lessThan10: {  // Set to 1 if value < 10
                    $cond: [ { $lt: ["$value", 10 ] }, 1, 0]
                },
                moreThan10: {  // Set to 1 if value > 10
                    $cond: [ { $gt: [ "$value", 10 ] }, 1, 0]
                }
            }
        },
        {
            $group: {
                _id: "$item",
                countSmaller: { $sum: "$lessThan10" },
                countBigger: { $sum: "$moreThan10" }
            }
        }
    ])
    

    注: valueを想定しました 文字列ではなく数値に変換します。

    出力:

    {
            "result" : [
                    {
                            "_id" : "xyz1",
                            "countSmaller" : 1,
                            "countBigger" : 0
                    },
                    {
                            "_id" : "abc1",
                            "countSmaller" : 2,
                            "countBigger" : 2
                    }
            ],
            "ok" : 1
    }  
    


    1. pymongoの高速またはバルクアップサート

    2. RedisをHerokuで開始するにはどうすればよいですか?

    3. Javaドライバーを使用してMongoDBに最後に挿入されたドキュメントIDを取得する

    4. MongoDBデータベースの名前をどのように変更しますか?