Map + Reduceを使用して、特定のフィールド(この場合は「国」フィールド)が存在するすべてのドキュメントを計算しようとしています。私にとって有効な唯一の解決策は次のとおりです。
mapper = Code("""
function () {
if (typeof this.country != 'undefined') {
var key = 1
emit(key, {count: 1})
};
};
""")
フィールドが存在する場合でも、キーにはあまり興味がないので、1を渡しました。しかし、それは間違いだと確信しています。
reducer = Code("""
function (key, values) {
var sum = 0;
values.forEach(function (value) {
sum += value['count'];
});
return {count: sum};
};
""")
そして、map_reduceを呼び出します:
results = dbHandle.cards.map_reduce(mapReduce.mapper, mapReduce.reducer, "resultsMR")
for doc in results.find():
print "Found %s documents." % int(doc.get('value').get('count'))
また、作成日が他の日付よりも大きいドキュメントの量を取得する方法を考えています。map_reduce関数で「クエリ」オプションを使用する必要がありますか?
query = {"foundationDate":{"$gt":datetime.datetime(2012, 1, 1, 00, 00, 00)}}
ありがとうございました :)