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

結果がない場合、MongoDBの集計リターンカウントは0です。

    私があなたが何を望んでいるのかを正しく理解しているなら、あなたはこれを試すことができます:

    db.builds.aggregate([
        { $project: 
            { 
                time: 1,
                projectedData: { $ifNull: ['$data.buildResult', 'none'] } 
            } 
        },
    
        { $group: { 
            _id: { 
                month: { $month: "$time" },
                day: { $dayOfMonth: "$time" },
                year: { $year: "$time" }, 
                buildResult: "$projectedData"
            },
            count: { $sum: { $cond: [ { $eq: [ "$projectedData", "none" ] }, 0, 1 ] } }
        } },
    
        { $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1 } }
    ])
    

    更新:
    入力されたドキュメントを出力から取得したい場合は、unwindでのみ可能です。 配列を処理する演算子ですが、配列がないため、私が知っているように、あなたのケースでこれ以上ドキュメントを取得することは不可能です。したがって、クエリ結果の後にロジックを追加して、別のタイプのbuildResultのカウントが0の既存の日付の新しいデータを作成する必要があります...




    1. MongoDBで{'public':true}のドキュメントのみを複製する

    2. nullを保存する場合とMongoDBにキーをまったく保存しない場合

    3. マングースnpmのインストールに失敗しました

    4. MongoアグリゲーションとJavaforループおよびパフォーマンス