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

MongoDB:値が条件に一致する場合、フィールドをカウントするにはどうすればよいですか?

    次の集約パイプラインを使用します:

    db.click_log.aggregate([
        { "$match" : { "log.type" : { "$ne" : "emailed" } } }, // get rid of docs with an "emailed" value in log.type and docs not from this month
        { "$unwind" : "$log" }, // unwind to get log elements as separate docs
        { "$project" : { "_id" : 1, "log" : 1, "month" : { "$month" : "$log.utc_timestamp" } } },
        { "$match" : { "log" : "clicked", "month" : <# of month> } }, // get rid of log elements not from this month and that aren't type clicked
        { "$group" : { "_id" : "$_id", "count" : { "$sum" : 1 } } } // collect clicked elements from same original doc and count number
    ])
    

    これは、log.typeの値として「emailed」がないドキュメントごとに返されます。 、配列の要素の数log log.typeがある 値clicked 今月のタイムスタンプ付き。月に30日間のスライド期間が必要な場合は、$matchを変更してください $gtを使用した範囲クエリになります および$lt 希望する期間をカバーします。



    1. C#のMongoDB集計関数

    2. データベースとしてのNoSQL(MongoDB)とLucene(またはSolr)

    3. MaxOSLionにXAMPPを使用してMongoDbPHPドライバーをインストール中にエラーが発生しました

    4. Cloudera Impala:Apache Hadoopでのリアルタイムクエリ、実際の場合