2012-03-21 9 views
28

मैं "_id" कुंजी पर खोज करके MongoDB में दस्तावेज़ ढूंढने की कोशिश कर रहा हूं। मेरे दस्तावेज़ इस-जावा mongodb ड्राइवर में "_id" फ़ील्ड का उपयोग कर दस्तावेज़ों को कैसे क्वेरी करें?

{ 
    "_id" : ObjectId("4f693d40e4b04cde19f17205"), 
    "hostname" : "hostnameGoesHere", 
    "OSType" : "OSTypeGoesHere" 
} 

तरह लग रहा है मैं

ObjectId id= new ObjectId("4f693d40e4b04cde19f17205");   
BasicDBObject obj = new BasicDBObject();   
obj.append("_id", id);   
BasicDBObject query = new BasicDBObject();   
query.putAll(query); 

जैसे- इस दस्तावेज़ खोज करने के लिए कोशिश कर रहा हूँ लेकिन मैं नीचे त्रुटि-

error: reference to putAll is ambiguous, both method putAll(Map) in BasicBSONObject and method putAll(BSONObject) in BasicBSONObject match 
     query.putAll(query); 

BasicDBObject समर्थन की संलग्न विधि (स्ट्रिंग कुंजी, मान) और यदि मैं इस विधि के लिए स्ट्रिंग के रूप में "_id" पास करता हूं, तो कोई दस्तावेज़ मिलान नहीं होता है।

तो मेरा सवाल यह है कि मैं "_id" कैसे पास करूं?

+0

अन्य जवाब मुझे और अधिक मदद की। शायद आप इसे स्वीकार करते हैं ... – Ohmen

उत्तर

3

क्वेरी का उपयोग करके इसे हल जैसे-

query.putAll((BSONObject)query); 
48

सुनिश्चित नहीं हैं कि अगर दूसरों इस विषय पर जवाब के लिए खोज कर सकता है, लेकिन यहां "_ id" के आधार पर एक MongoDB रिकार्ड के लिए खोज करने के लिए सबसे आसान तरीका है। MongoDB प्रलेखन अद्यतन नहीं किया गया है और अभी भी ऑब्जेक्ट आईडी को com.mongodb पैकेज का हिस्सा होने के रूप में दिखाता है (यह आमतौर पर ऑब्जेक्टआईडी द्वारा खोज पर बहुत सारी जानकारी नहीं देता है)।

import org.bson.types.ObjectId; 

public DBObject findDocumentById(String id) { 

    BasicDBObject query = new BasicDBObject(); 
    query.put("_id", new ObjectId(id)); 

    DBObject dbObj = collection.findOne(query); 
    return dbObj; 
} 
0

आप इस

ObjectId id= new ObjectId("4f693d40e4b04cde19f17205");   
    BasicDBObject obj = new BasicDBObject();   
    obj.append("_id", id);   
    BasicDBObject query = new BasicDBObject();   
    query.putAll((BSONObject)query); 
1

जो लोग विशेष रूप से 3.4 के साथ, तिथि विधि करने के लिए एक और अधिक मांग कर रहे हैं के लिए कर सकते हैं:

import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import org.bson.Document; 
import org.bson.types.ObjectId; 

import static com.mongodb.client.model.Filters.eq; 

//...... 
MongoCollection<Document> myCollection = database.getCollection("myCollection"); 
Document document = myCollection.find(eq("_id", new ObjectId("4f693d40e4b04cde19f17205"))).first(); 
if (document == null) { 
    //Document does not exist 
} else { 
    //We found the document 
} 
संबंधित मुद्दे