2012-07-15 7 views
8

मैं Age और MongoDB में Name जावा ड्राइवर के माध्यम से और यहाँ पर यौगिक सूचकांक बनाना चाहते हैं मेरी वाक्य रचना है:जावा ड्राइवर के माध्यम से MongoDB में एक कंपाउंड इंडेक्स कैसे बनाएं?

coll.ensureIndex(new BasicDBObject("Age", 1),new BasicDBObject("Name", -1)); 
List <DBObject> list = coll.getIndexInfo(); 

    for (DBObject o : list) { 
     System.out.println(o); 
    } 

लेकिन यह केवल 1 सूचकांक सूचकांक Compund नहीं बना सकते हैं और मुझे इस परिणाम दे:

{ "v" : 1 , "key" : { "_id" : 1} ,"ns" :"EmployeeData.EmpPersonalData", "name":"_id_"} 
{ "v" : 1 , "key" : { "Age" : 1} , "ns" : "EmployeeData.EmpPersonalData" , "name" : "Age_1" , "Name" : -1} 

तो जावा ड्राइवर के माध्यम से संग्रह पर अनुक्रम सूचकांक कैसे बनाया जा सकता है?

उत्तर

26

यदि आप अपना कोड देखते हैं, तो आपने वास्तव में दो पैरामीटर के साथ ensureIndex कहा है। आपका पहला पैरामीटर कुंजी था और आपका दूसरा पैरामीटर कुछ अतिरिक्त फ़ील्ड बन गया: Name: -1

जो आप पहले पैरामीटर में पास करना चाहते हैं वह यह ऑब्जेक्ट {"Age":1, "Name":-1} है। जो आपने वास्तव में पारित किया वह {"Age":1}, {"Name":-1} था।

BasicDBObject obj = new BasicDBObject(); 
obj.put("Age", 1); 
obj.put("Name", -1); 
coll.ensureIndex(obj); 

ध्यान दें कि सूचकांक एक डिफ़ॉल्ट नाम के साथ बनाया जाएगा:

तो तुम कुछ इस तरह करना चाहते हैं। एक विशिष्ट नाम प्रदान करने के लिए निम्न कार्य करें:

coll.ensureIndex(obj, "MyName"); 
+0

धन्यवाद, यह :) – jad001

+6

काम कर Stackoverflow में, मैं अंक अगर आप सही रूप में जवाब निशान और/या यह वोट उठो। यह अन्य लोगों को भी बताता है कि यह सही जवाब था। क्या आप ऐसा करने में सक्षम होंगे? –

+0

@ गेट्स क्यों नहीं! खेद है कि मैंने पहले किया होगा लेकिन मैं इस साइट पर नया हूं :) – jad001

3

आप आधिकारिक दस्तावेज़ीकरण के अनुसार इसे आजमा सकते हैं। गेट्स बहुत

import org.bson.Document; 
db.getCollection("restaurants").createIndex(new Document("cuisine", 1).append("address.zipcode", -1)); 

Official Mongo DB Driver Java documentation

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