2013-01-21 9 views
5

मैं पेमोंगो में मानचित्र-कमी के साथ अधिकतम uid फ़ील्ड के साथ दस्तावेज़ कैसे प्राप्त करूं?मानचित्र के साथ अधिकतम मूल्य वाले दस्तावेज़ को कैसे प्राप्त करें-पिमोंगो में कम करें?

मैं कोशिश की है निम्नलिखित लेकिन यह पता प्रिंट कारतूस:

from pymongo import Connection 
from bson.code import Code 

db = Connection().map_reduce_example 
db.things.insert({ 
    "_id" : "50f5fe8916174763f6217994", 
    "deu" : "Wie Sie sicher aus der Presse und dem Fernsehen wissen, gab es in Sri Lanka mehrere Bombenexplosionen mit zahlreichen Toten.\n", 
    "uid" : 13, 
    "eng" : "You will be aware from the press and television that there have been a number of bomb explosions and killings in Sri Lanka." 
}) 

db.things.insert({ 
    "_id" : "50f5fe8916234y0w3fvhv234", 
    "deu" : "Ich bin schwanger foo bar.\n", 
    "uid" : 14, 
    "eng" : "I am pregnant foobar." 
}) 

db.things.insert({ 
    "_id" : "50f5fe8916234y0w3fvhv234", 
    "deu" : "barbar schwarz sheep, haben sie any foo\n", 
    "uid" : 14, 
    "eng" : "barbar black sheep, have you any foo" 
}) 

m = Code("function() {emit(this.uid,{'uid':this.uid,'eng':this.eng})}") 

r = Code("function (key, values) {var total = 0;for (var i = 0; i < values.length; i++) {total += values[i];}return total;}") 


result = db.things.inline_map_reduce(m, r) 

for r in result: 
    print 

एक उदाहरण दस्तावेज है कि इन की तरह लग रहे:

{ 
    "_id" : ObjectId("50f5fe8916174763f6217994"), 
    "deu" : "Wie Sie sicher aus der Presse und dem Fernsehen wissen, gab es mehrere Bombenexplosionen mit zahlreichen Toten.\n", 
    "uid" : 13, 
    "eng" : "You will be aware from the press and television that there have been a 
      number of bomb explosions and killings." 
} 
+1

बीटीडब्ल्यू, 'बार्बर ब्लैक भेड़, क्या आप किसी भी foo' जर्मन में 'barbar schwarzes Schaf, hast du etwas foo' होगा। – luckydonald

उत्तर

31

आप find_one उपयोग कर सकते हैं अधिकतम uid द्वारा साथ दस्तावेज़ को खोजने के लिए उस क्षेत्र पर छेड़छाड़: ​​

db.things.find_one(sort=[("uid", -1)]) 

या उपयोग परिभाषित निरंतर:

db.things.find_one(sort=[("uid", pymongo.DESCENDING)]) 
+0

कम नक्शा के बिना 'ढूंढें() 'या' find_one() 'करना महंगा नहीं है, खासकर जब मेरे पास डेटाबेस में 2,000,000 दस्तावेज़ हैं। – alvas

+1

नहीं, लेकिन आप अभी भी यह सुनिश्चित करना चाहते हैं कि आपको 'यूआईडी' पर एक इंडेक्स था यदि आपको इसे निष्पादित करने की आवश्यकता है। – JohnnyHK

+2

यो दिशा तर्क को इंगित करने के लिए अधिक वर्णनात्मक पूर्वनिर्धारित स्थिरांक का उपयोग कर सकता है: '1' के बजाय' -1' और 'pymongo.ASCENDING' के बजाय 'pymongo.DESCENDING'' – userlond

संबंधित मुद्दे

 संबंधित मुद्दे