MongoDBの中で様々なユーザーが作成した投稿数カウントする:同様に書き込みMapReduceの機能は、私がようにMongoDBにタイトル、説明、によって、コメントをコレクション「投稿」を作成していた
db.posts.insert({
title:'MongoDB',
description:'MongoDB is a NoSQL DB',
by:'Tom',
comments:[
{user:'ram',
message:'We use MongoDB'
}
]
}
)
を、私は、他の2つを追加しましたエントリ。 ここで、MongoDBのさまざまなユーザーによって作成された投稿の数をカウントするMapReduce関数を書きたいと思っています。私が使用:
db.posts.mapReduce(
function() { emit(this.user_id,1); },
function(key, values) {return Array.sum(values)}, {
out:"post_total"
}
).find()
この出力:
{"id": null , "value": 3}
しかし、私は何を表示することのようなものです:
{ "_id" : "tom_id", "value" : 2 }
{ "_id" : "mark_id", "value" : 1 }
または
{ "by" : "tom", "value" : 2 }
{ "by" : "mark", "value" : 1 }
db.posts.mapReduce( 関数(){ EMIT(this.user_id、1); }、 機能(キー、値){ 戻りArray.sum(値); }、 { "アウト ":{ "インライン":1}} ).find() 出力: [{" ID ":ヌル、 "値":3}] が働きません。 –
@SarojShresthaなぜインライン出力にfind()を追加していますか?検索せず – chridam
()出力 "結果":[ { "ID":ヌル、 "値":3 } ] "timeMillis":15、 "カウント":{ "入力":3、 "EMIT":3、 は "減らす":3、 "出力":1 }、 "OK":1 } –