Vì vậy, tôi mới với MongoDB và MapReduce nói chung và tình cờ gặp này "đứa" (hoặc ít nhất trong tâm trí tôi một điều không minh bạch)MongoDB MapReduce - Phát ra một/một giá trị quan trọng doesnt gọi giảm
Nói rằng tôi có các đối tượng trong bộ sưu tập của tôi như vậy:
{ 'chìa khóa': 5, 'giá trị': 5}
{ 'chìa khóa': 5, 'giá trị': 4}
{ 'chìa khóa' : 5, 'value': 1}
{ 'chìa khóa': 4, 'giá trị': 6}
{ 'chìa khóa': 4, 'giá trị': 4}
{ 'chìa khóa': 3, 'giá trị': 0}
My đồ chức năng đơn giản là phát ra chìa khóa và giá trị
My giảm chức năng đơn giản là bổ sung thêm các giá trị vÀ trước khi trở về họ cho biết thêm 1 (tôi đã làm điều này để kiểm tra xem chức năng giảm là e ven gọi)
kết quả của tôi theo:
{ '_id': 3, 'giá trị': 0}
{ '_id': 4, 'giá trị': 11.0}
{ '_id': 5, 'giá trị': 11.0}
Như bạn thấy, đối với các phím 4 & 5 tôi nhận được câu trả lời dự kiến của 11 NHƯNG cho th e key 3 (chỉ có một mục trong bộ sưu tập với khóa đó) tôi nhận được số 0 bất ngờ!
Hành vi tự nhiên của mapreduce này có nói chung không? Đối với MongoDB? Đối với pymongo (mà tôi đang sử dụng)?
Chỉ cần rõ ràng, đây là cách giảm bản đồ được thiết kế. Nếu bạn muốn sửa đổi tài liệu bằng các khóa duy nhất (như khóa 3), hãy xem xét sử dụng chức năng hoàn thành: http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-FinalizeFunction – Jenna
giải pháp nếu chúng tôi muốn bao gồm quan trọng với một tài liệu trong kết quả ??? –
@RaviKhakhkhar các tài liệu duy nhất vẫn được bao gồm trong các kết quả, chỉ cần các chức năng giảm không bao giờ được gọi vào chúng – Cilvic