2017-03-14 6 views
2

はnodejsでコレクションからの情報でarticleIDに対してカウントを取得し、MongoDBのために必要句は(情報でarticleIDのコレクション)配列に対してMongoDBの中で数えます

{ 
"5836d0f7f8462cbc6d0caffc", 
"5836e493f2acbd1d34648e78", 
"5836dba8a2943528448a3050" 
} 

必要に似ている

/* 1 */ 
{ 
    "_id" : ObjectId("5836d0f7f8462cbc6d0caffc"), 
    "DeviceId" : "abcd1234", 
    "AppType" : "web", 
    "UserId" : "5836cb01f8462cbc6d0caff8", 
    "ArticleId" : "5836cb01f8462cbc6d0caff8", 
    "Timestamp" : ISODate("2016-11-24T11:37:27.851Z") 
} 

/* 2 */ 
{ 
    "_id" : ObjectId("5836e5f617632727286475e0"), 
    "Apptype" : "android", 
    "DeviceId" : "abcsd1212", 
    "UserId" : "19283738264817", 
    "ArticleId" : "5836wp0615555727286475e0", 
    "Timestamp" : "2016-11-24 12:23:04.484Z" 
} 

/* 3 */ 
{ 
    "_id" : ObjectId("583d487803d7691d54a82060"), 
    "DeviceId" : null, 
    "AppType" : null, 
    "UserId" : null, 
    "ArticleId" : "583d28412f93b67c1500002a", 
    "Timestamp" : ISODate("2016-11-29T09:20:56.895Z") 
} 

/* 4 */ 
{ 
    "_id" : ObjectId("583d4aa564b47b199ca6b71e"), 
    "DeviceId" : null, 
    "AppType" : null, 
    "UserId" : null, 
    "ArticleId" : "583559814d93b6080d000029", 
    "Timestamp" : ISODate("2016-11-29T09:30:13.785Z") 
} 

/* 5 */ 
{ 
    "_id" : ObjectId("583d4ab364b47b199ca6b71f"), 
    "DeviceId" : null, 
    "AppType" : null, 
    "UserId" : null, 
    "ArticleId" : "58343672dc1434742700002a", 
    "Timestamp" : ISODate("2016-11-29T09:30:27.200Z") 
} 

/* 6 */ 
{ 
    "_id" : ObjectId("584502efc0e6500558d20874"), 
    "DeviceId" : null, 
    "AppType" : null, 
    "UserId" : null, 
    "ArticleId" : "583d28412f93b67c1500002a", 
    "Timestamp" : ISODate("2016-12-05T06:02:23.905Z") 
} 

結果を取得する

[{"ArticleId" : "5836d0f7f8462cbc6d0caffc","ViewCount":5}, 
{"ArticleId" : "5836e493f2acbd1d34648e78","ViewCount":42}, 
{"ArticleId" : "5836dba8a2943528448a3050","ViewCount":19}] 

アドバンスe

+0

試しましたか? sumの計算中に演算子とグループ内の記事IDを使用して一致するようなもの – Veeram

+0

これらの_idは実際にArticleIdフィールドと一致していますか?最初のドキュメント "_ 5836d0f7f8462cbc6d0caffc"は、最初のドキュメントの_idとしてデータに入っています。それぞれが文書_idである場合、それぞれ最大1のカウントで返されます。 –

+0

私はここにいくつかのダミーデータを掲載しました。私のコレクションには1つ以上のlakhデータが含まれています。 – Ani

答えて

1

この問題は、MongoDBの集約機能を使用することで解決できます。

ドキュメントは、あなたが何をすべきhere

提供されています:1)集計(=グループ)文書番号と、その後2によって文書)は、グループごとのドキュメントの数を数えます。

db.collection_name.aggregate(
    [ 
     { 
     $group : { 
      _id : { articleId: $ArticleId }, 
      count: { $sum: 1 } 
     } 
     } 
    ] 
) 

あなただけの記事の特定のセットのカウントが必要な場合(コード未テストが、それでも良いスタート)

今は、あなたが事前にフィルタリングすることができますが、あなたのコレクションのサイズに応じてそのかもしれないでも必要になる。

+0

@有用であれば正解と記入してください。ありがとう! – Jan

+0

ありがとうございますが、まだ解決されていません。 – Ani

+0

問題点は何ですか? – Jan

関連する問題