Java — MongoDB-collection.finden() durch _id
Ich bin versucht, ein element aus einer Sammlung, die unter Verwendung seines eindeutigen _id, aber ich kann nicht finden wie.
Dies ist mein code
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("DB");
MongoCollection<Document> collection = database.getCollection("COLL");
Wenn ich die Abfrage für meine db mit
BasicDBObject query=new BasicDBObject("info.i0","0");
Document myDoc = collection.find(query).first();
System.out.println(myDoc.toJson());
Bekomme ich als Ausgabe
{ "_id" : { "$oid" : "560ea3f205240f065a3e9d19" }, "name" : "MongoDB", "type" : "database", "count" : 1, "info" : { "i0" : "0", "i1" : "1", "i2" : "2", "i3" : "3", "i4" : "4", "i5" : "5", "i6" : "6", "i7" : "7", "i8" : "8", "i9" : "9" } }
Aber Wenn ich versuche
BasicDBObject query=new BasicDBObject("_id.$oid","560ea3f205240f065a3e9d19");
Document myDoc = collection.find(query).first();
System.out.println(myDoc.toJson());
Bekomme ich eine Null-pointer-exception, myDoc null ist.
Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
$oid
es ist nur zu bewahren BSON-Darstellung.Er hat nur eine Bedeutung zu MongoDB interne JSON-Parser.
Müssen Sie nur nutzen
_id
in der Abfrage:BasicDBObject query=new BasicDBObject("_id",new ObjectId("560ea3f205240f065a3e9d19"));
Beachten Sie auch, dass die
_id
Feld ist vom TypObjectId
und nichtString
.Müssen Sie wickeln Sie es in ein
ObjectId
Konstruktor.Gute Nachricht ist, gibt es keine Ausgabe in Ihrer Abfrage, aber Ihr Dokument nicht richtig angezeigt wird, Wie Sie in der Lage zu legen, eingereicht Namen beginnen mit $ ?
- Dokumenten die folgenden Einschränkungen auf Feld-Namen:
Feld name _id ist reserviert für die Verwendung als Primärschlüssel; Ihr Wert muss eindeutig sein in der Sammlung, ist unveränderlich und kann von keinem anderen Typ als ein array.
Die Feldnamen können nicht beginnen mit dem dollar-Zeichen ( $ ) - Zeichen.
Die Feld-Namen enthalten, nicht der Punkt (.) Charakter.
Die Feld-Namen enthalten, nicht das null-Zeichen.
http://docs.mongodb.org/manual/core/document/
Verwendung von JSON (scala) :
Json.obj("_id" -> Json.obj("$oid" -> "560ea3f205240f065a3e9d19"))