Konvertierung von String zu MongoDB ObjectID
Versuchte ich, meine Umwandlung String-ID MongoDB ObjectID
public class relevancy_test extends Object implements Comparable<ObjectId> {
public static void main(String[] args) throws UnknownHostException {
MongoClient mongo = new MongoClient("localhost", 27017);
DB mydb = mongo.getDB("test");
DBCollection mycoll = mydb.getCollection("mytempcoll");
BasicDBObject query = null;
Map<ObjectId, DBObject> updateMap = new HashMap<ObjectId, DBObject>();
List<DBObject> dbobj = null;
DBCursor cursor = mycoll.find();
dbobj = cursor.toArray();
for (DBObject postObj : dbobj) {
String id = postObj.get("_id").toString();
ObjectId objId = new ObjectId((String) postObj.get("_id"));
updateMap.put(objId, postObj);
}
}
}
Hier (String) postObj.get("_id")
ist von der form "8001_469437317594492928_1400737805000"
Läuft auf folgenden Fehler zeigt sich
Exception in thread "main" java.lang.IllegalArgumentException: invalid ObjectId [8001_469437317594492928_1400737805000]
at org.bson.types.ObjectId.<init>(ObjectId.java:181)
at org.bson.types.ObjectId.<init>(ObjectId.java:167)
at fetch_data_tanmay.relevancy_test.main(relevancy_test.java:48)
InformationsquelleAutor Tanmay Awasthi | 2015-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie ich sehe, gibt es zwei Problem hier:
Den Wert
8001_469437317594492928_1400737805000
ist kein HEX-Wert, die Sie sehen können, in der DB aber eine explizite Verkettung von Zeit -, Rechner-id, pid-und counter-Komponenten. Diese Komponenten dienen zur Erzeugung HEX-Wert. Um HEX-Wert, den Sie brauchen, um verwenden Sie die Methode ToString Ihrer ObjectID-Instanz.Verweis auf die Erklärung der ObjectID-Komponenten hier:
http://api.mongodb.com/java/current/org/bson/types/ObjectId.html
Um neue ObjectID-Instanz mit bestimmten HEX-Wert verwenden, dieses:
var objectId = new ObjectId(hexStringId)
InformationsquelleAutor Vadzim Dabravolski
Hier ist ein Beispiel, die Sie dienen:
InformationsquelleAutor Carlos Alberto Gonzalez
ObjectId ist ein 12-byte-BSON-Typ
Hier dein string "8001_469437317594492928_1400737805000" ist nicht 12 byte BSON-Typ. so update nach ObjectId
Erzeugen einer neuen ObjectId mit der ObjectId() Konstruktor mit dem eine eindeutige hexadezimal-string:
Bitte stellen Sie string korrekt zu konvertieren, string objectId.
InformationsquelleAutor Dineshaws
Beim abrufen aus der Liste werfe es direkt zu ObjectId
InformationsquelleAutor rns
Ich bin in der Lage zu konvertieren, String ObjectId, wie unten:
Hier bin ich Update-zip-code von 'Adresse' - Kollektion, nehmen Sie an, Sie erhalten REST-api input - wie unten:
Nun habe ich auf Adresse suchen-Datensatz auf der Grundlage der oben genannten id (ObjectId in mongodb). Ich habe eine mongorepository, und verwenden Sie folgenden code zu finden, der die Adresse aufnehmen:
Und verwenden Sie diese repository-Methode in Ihrer service-Klasse, wie:
InformationsquelleAutor Ashu Phaugat