2011-01-14 10 views
11

मेरे मोंगो संग्रह में, मेरे पास टाइमस्टैम्प के साथ कई रिकॉर्ड हैं। मैं findOne() का उपयोग करना चाहता हूं और जहां पैरामीटर के साथ सबसे पुराना रिकॉर्ड वापस करना चाहता हूं।msodb में MySQL ऑर्डर findOne()

यदि findOne() का उपयोग करना संभव नहीं है, तो यह ठीक है। मुझे बस एक पैरामीटर के साथ सबसे पुराना रिकॉर्ड वापस करने की जरूरत है।

यह मोंगोडीबी में कैसे किया जा सकता है?

उत्तर

11

मैं यह करने के लिए किया था।

$request = $collection_requests->find(array('status' => 0)); 
$request->sort(array('created' => 1)); 
$request->limit(1); 
$request->next(); 
$request = $request->current(); 
+7

धाराप्रवाह ढंग से एक ही लिखने से नवीनतम मूल्य मिल रहा है: (सरणी ('स्थिति' => 0)) $ का अनुरोध = $ COLLECTION-> लगता है -> क्रमबद्ध करें (सरणी '' बनाई गई '=> 1)) -> सीमा (1) -> getNext(); – dubrox

7

आप इस कोशिश कर सकते हैं:

db.collection.find().sort({timestamps : -1}).limit(1); 
+1

'_ id' क्षेत्र के आधार पर सॉर्ट करने के लिए उपयोग BTW यह, सही जवाब है, लेकिन अधिक सही ढंग से के रूप में यह 'टाइमस्टैम्प ही शामिल db.collection.find() .sort ({_ id: -1})। सीमा (1); ' –

+3

एफडब्ल्यूआईडब्ल्यू, आपको मोंगो की स्वत: जेनरेटेड आईडी का उपयोग करने की आवश्यकता नहीं है, इसलिए यह आवश्यक नहीं है कि _id में टाइमस्टैम्प हो। वैसे भी, भले ही आप मोंगो आईडी का उपयोग कर रहे हों, आपको केवल सम्मिलित तारीख मिल जाएगी। दस्तावेज़ के टाइमस्टैम्प फ़ील्ड में एक अपडेट _id फ़ील्ड को नहीं बदलेगा और इस प्रकार कोई पुराना दस्तावेज़ अपडेट होने पर वास्तविक नवीनतम टाइमस्टैम्प नहीं लौटाएगा। एसओओ - मैं असहमत हूं कि _id फ़ील्ड द्वारा क्रमबद्ध करने के लिए यह "अधिक सही" है। ;) – Kasapo

+0

साथ -1 क्रमबद्ध करने पर आपको उलट परिणाम मिलेगा, संग्रह – Jaap

13

आप एक सबसे पुराने रिकॉर्ड की जरूरत है,

db.collection.find().sort({ created: *1* }).limit(1) 
संबंधित मुद्दे