2012-03-15 11 views
6

मोंगोडीबी आईडी एक डेटाबेस क्लस्टर के लिए अद्वितीय हैं। संग्रह नाम निर्दिष्ट किए बिना, उनके आईडी का उपयोग कर दस्तावेज़ प्राप्त करना संभव है?संग्रह को निर्दिष्ट किए बिना मोंगो डीबी में एक दस्तावेज़ प्राप्त करें

यदि हां, तो कैसे?

यदि नहीं, तो क्यों नहीं?

उत्तर

7

हां, लेकिन एक स्केलेबल तरीके से नहीं (क्योंकि आपको प्रत्येक संग्रह से पूछना चाहिए)। यदि आपके पास 2 या 3 संग्रह हैं, तो यह ठीक हो सकता है, लेकिन ... शायद आपको यह पता लगाने के लिए अपने डिजाइन की समीक्षा करनी चाहिए कि आप ऐसा क्यों कर रहे हैं। तुम क्यों हो, वैसे?

  1. आपको डेटाबेस में सभी संग्रहों की एक सूची मिलती है। _ id के आधार पर
  2. आप पाश के माध्यम से उन्हें और क्वेरी

नमूना खोल कोड:

db.test1.save({}); 
db.test2.save({}); 
db.test3.save({}); 
db.test4.save({}); 
db.test5.save({}); 
db.test6.save({}); 

db.test2.findOne(); // gives: { "_id" : ObjectId("4f62635623809b75e6b8853c") } 

db.getCollectionNames().forEach(function(collName) { 
    var doc = db.getCollection(collName).findOne({"_id" : ObjectId("4f62635623809b75e6b8853c")}); 
    if(doc != null) print(doc._id + " was found in " + collName); 
}); 

देता है: 4f62635623809b75e6b8853c was found in test2

2

ऑब्जेक्टआईडी को विश्व स्तर पर अद्वितीय (दुनिया भर में, केवल एक क्लस्टर के भीतर) के रूप में डिज़ाइन किया गया है। और यह बहुत ज्यादा है।

इसमें समय, मशीन आईडी, प्रक्रिया आईडी और यादृच्छिक संख्या शामिल है। हालांकि, इसमें डेटाबेस या संग्रह नाम शामिल नहीं है। इसलिए, केवल आईडी का उपयोग करके दस्तावेज़ लाने के लिए असंभव है। आपको डेटाबेस और संग्रह नाम भी प्रदान करना होगा।

+0

लेकिन मैं संग्रह में कोई दिलचस्पी नहीं हूँ - मैं कर रहा हूँ ऑब्जेक्ट में दिलचस्पी है! दूसरे शब्दों में, मुझे यह नहीं पता कि यह संग्रह नहीं हुआ कि संग्रहित वस्तु किस संग्रह से संबंधित है। क्या इसका मतलब यह है कि डेटाबेस में सभी ऑब्जेक्ट्स की कोई भी सूची नहीं है? – sssilver

+0

यह सही है। ऐसी कोई सूची नहीं है। –

+2

जो वैश्विक स्तर पर अनोखी उत्कृष्टता को मारता है :( – sssilver

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