2012-04-13 10 views
26

इसलिए मुझे अपने संग्रह में वस्तुओं से विशेष रूप से विशिष्ट उप-दस्तावेज़ों का संदर्भ देना होगा। उदाहरण के लिए:मैं मोंगोडीबी में एम्बेडेड दस्तावेज़ों के लिए अद्वितीय आईडी कैसे बना सकता हूं?

User = { 
    'name': 'jim', 
    'documents: [ 
     {'id': 0001, 'title': "My document"}, 
     {'id': 0002, 'title': "My second document!"}, 
    ] 
} 

तो मैं नए दस्तावेज़ों के लिए आईडी ऑटो बनाने में सक्षम होने की जरूरत है, खासकर नहीं आवेदन के स्तर पर (के बाद से वहाँ वास्तविक विकास परिदृश्य में दौड़ की स्थिति हो जाएगा)।

क्या मोंगो के स्वत: उत्पन्न ऑब्जेक्टआईडी (संग्रह स्तर पर _id फ़ील्ड में उपयोग किया जाता है) का उपयोग करने का कोई तरीका है, या कुछ समान है?

+1

यदि आप एक ग्रिड का उपयोग नहीं करते हैं तो –

उत्तर

19

हां, मोंगो के ऑब्जेक्ट आईडी का उपयोग करने का तरीका है। केवल एक चीज है: आपको एप्लिकेशन कोड में स्वयं को उत्पन्न करना होगा। वे वैश्विक रूप से अद्वितीय होने के लिए हैं, अलग-अलग श्रमिक दो समान ऑब्जेक्ट्स उत्पन्न नहीं करेंगे, इसलिए उस अर्थ में कोई दौड़ की स्थिति नहीं है।

सभी आधिकारिक ड्राइवरों को ObjectId उत्पन्न करने का एक तरीका प्रदान करना चाहिए। यहां बताया गया है कि यह रूबी में कैसे है:

oid = BSON::ObjectId.new 
+0

नहीं होगा क्या आपको कोई विचार है कि इसे मोंगो सीएलआई के साथ कैसे किया जाए ??? –

+2

@PiniCheyni इस तरह: 'नया ऑब्जेक्ट आईडी()' – Clouren

9

सभी ड्राइवरों में ऑब्जेक्ट आईडी बनाने के लिए कार्यक्षमता है।

खोल में आप सिर्फ new ObjectId() कार्य करें:

> db.test.insert({x:new ObjectId()}); 
> db.test.find(); 
{ "_id" : ObjectId("4f88592a06c05e4de90d0bc1"), "x" : ObjectId("4f88592a06c05e4de90d0bc0") } 

जावा में यह new ObjectId() रूप में अच्छी तरह है। विशिष्ट वाक्यविन्यास देखने के लिए अपने ड्राइवर के लिए एपीआई दस्तावेज़ देखें।

3

उल्का में, सर्वर पर, का उपयोग करें:

new Meteor.Collection.ObjectID(hexString); 

देखें: http://docs.meteor.com/#collection_object_id

+0

लिंक होना चाहिए http://docs.meteor.com/#/full/mongo_object_id –

0

और यहाँ कैसे Clojure में यह करने के लिए, congomongo के उपयोग संभालने है:

(import org.bson.types.ObjectId) 
(str (ObjectId.)) ; => "12345xxxxx" 
6

के साथ mongoengine इस तरह के एक एम्बेडेड दस्तावेज़ में ऑब्जेक्ट आईडी बनाएँ:

from bson.objectid import ObjectId 

class Address(EmbeddedDocument): 
    _id = ObjectIdField(required=True, default=lambda: ObjectId()) 
    street = StringField() 
+0

'डिफ़ॉल्ट = ऑब्जेक्ट आईडी 'भी काम करना चाहिए –

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

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