私は次のレイアウトを持っています:
{
"URL": "http://someurl.de",
"plugins": {
"HTTPServer": {
"os": [
"FreeBSD"
],
"string": [
"Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8q DAV/2 PHP/5.3.8 with Suhosin-Patch"
]
}
}
}
plugins.HTTPServer.stringに保存されている一意のアイテムの数を取得したいと思います。ただし、すべてのMapReduceの例は、単一レベルのドキュメントを参照しているだけです。例を理解しているので、map関数でデータを出力する(または抽出するデータを選択する)必要があります。その後、reduceを使用して結果をさらに処理します。私の問題はマッピング段階にあると思います。「Apache/2.2...」という上記の文字列値にアクセスする必要があります。
私は最後の日をMongoDBで過ごしただけなので、ここで正しい質問をしていなければ、無知を許してください。私は正しい方向に向かっていますか?私はdistinct=db.coll.distinct('plugins.HTTPServer.string')を使用できることを知っていますが、これをMapReduceで実行したいと思います。
map = function() {
server = this.plugins.HTTPServer.string
emit({server : this.server}, {count: 1});
}
reduce = "function(key, values) {
var count = 0;
values.forEach(function(v) {
count += v['count'];
});
return {count: count};
}"