* असल में मैं आखिरी घंटे में अपने स्कोर द्वारा वस्तुओं को ऑर्डर करने का प्रयास कर रहा हूं।MongoDB MapReduce स्थान पर अपडेट करें
मैं अपने डेटाबेस में ऑब्जेक्ट्स के लिए एक घंटे के वोट राशि उत्पन्न करने की कोशिश कर रहा हूं। वोट प्रत्येक वस्तु में एम्बेडेड हैं। वस्तु स्कीमा इस तरह दिखता है:
{
_id: ObjectId
score: int
hourly-score: int <- need to update this value so I can order by it
recently-voted: boolean
votes: {
"4e4634821dff6f103c040000": { <- Key is __toString of voter ObjectId
"_id": ObjectId("4e4634821dff6f103c040000"), <- Voter ObjectId
"a": 1, <- Vote amount
"ca": ISODate("2011-08-16T00:01:34.975Z"), <- Created at MongoDate
"ts": 1313452894 <- Created at timestamp
},
... repeat ...
}
}
यह सवाल वास्तव में एक प्रश्न से संबंधित है मैं Best way to model a voting system in MongoDB
कुछ दिनों के लिए कहा पहले मैं कैसे (मैं कर सकते हैं?) के बाद करने के लिए एक MapReduce आदेश चला जाएगा :
- केवल के साथ वस्तुओं पर चलने हाल ही में मतदान = true या प्रति घंटा स्कोर> 0.
- पिछले एक घंटे में बनाए वोट की राशि की गणना।
- प्रति घंटा-स्कोर = ऊपर गणना की गई राशि अपडेट करें, और हाल ही में मतदान = झूठी।
मैं भी here कि मैं db.getMongo चलाकर गुलाम डीबी पर एक MapReduce प्रदर्शन कर सकते हैं पढ़ा()। SetSlaveOk() एम/आर आदेश से पहले। क्या मैं दास पर कमी चला सकता हूं और मास्टर डीबी अपडेट कर सकता हूं?
मोंगो MapReduce के साथ इन-प्लेस अपडेट भी संभव हैं?
ठीक है सब कुछ चरण 3 तक समझ में आता है। मुझे समझ में नहीं आता कि कम घंटे के स्कोर योग को कैसे लेना है और संग्रह में प्रासंगिक वस्तुओं को अपडेट करना है। मान लें कि हमारे पास मेरे प्रश्न में स्कीमा के साथ एक संग्रह टिप्पणियां हैं और मैं सभी कम प्रासंगिक टिप्पणियों को घंटे-स्कोर को नए कम रकम में अपडेट करना चाहता हूं। प्रति घंटा स्कोर टिप्पणी वस्तुओं पर एक पैरामीटर है, एक अलग संग्रह में कुछ नहीं। मुझे यह कैसे करना है? – Marc
ओह, मैं देखता हूं - आप मानचित्र-आउटपुट के आउटपुट के साथ 'घंटा-स्कोर' फ़ील्ड को वोट राशियों (फ़ील्ड 'वोट.ए') के योग के रूप में अपडेट करना चाहते हैं? मुझे नहीं लगता कि आप मानचित्र-कम के साथ इन लाइन को कर सकते हैं, लेकिन आप निश्चित रूप से एक पोस्ट-प्रोसेसिंग चरण कर सकते हैं जो मानचित्र को कम करता है-किसी भी संग्रह को अपडेट करने के लिए आउटपुट को कम करता है। – dcrosta
हम्म ठीक है। एक रिलेशनल डेटाबेस से यह एक काफी सरल काम है। असल में मैं बस इतना करना चाहता हूं कि आखिरी घंटे में ऑब्जेक्ट्स ऑर्डर करें। एक रिलेशनल में मैं स्कोर को एक अलग टेबल में रखूंगा। फिर मैं ऑब्जेक्ट टेबल से चयन करता हूं, स्कोर टेबल में शामिल होता हूं, उस योग के आखिरी घंटे और ऑर्डर के स्कोर देता हूं। शायद या तो ए। मोंगो बस या बी के लिए अच्छा नहीं है। मैं अपनी वस्तुओं/वोटों को गलत तरीके से व्यवस्थित कर रहा हूं? – Marc