2016-10-08 2 views
1

У меня есть набор идентификаторов документов, которые я ранее добавлял в MongoDB.Получить документ MongoDB по ID на Java

Затем я пытаюсь получить документ из ID.

String idString = "57f8f50977c8a5b8757f261a"; 
BasicDBObject whereQuery = new BasicDBObject(); 
whereQuery.put("_id", idString); 
DBCursor cursor = table.find(whereQuery);    
if(cursor.hasNext()) 
{ 
System.out.println("FOUND!" + cursor.next()); 
} 

Я получаю нулевые результаты.

Но, если я звоню в другое поле Он работает и возвращает мне документ.

BasicDBObject whereQuery = new BasicDBObject(); 
whereQuery.put("datachain", "AA"); 
DBCursor cursor = table.find(whereQuery); 
if(cursor.hasNext()) 
{ 
System.out.println("FOUND!" + cursor.next()); 
} 

FOUND!{ "_id" : { "$oid" : "57f8f50977c8a5b8757f261b"} , "datachain" : "AA" , "createdDate" : { "$date" : "2016-10-08T13:30:49.588Z"}} 

Что я делаю неправильно? Почему я не могу найти документ по ID? Thnx!

UPD: BasicDBObject whereQuery = new BasicDBObject(); whereQuery.put ("_ id", новый ObjectId ("57f8f50977c8a5b8757f261a")); DBCursor cursor = table.find (whereQuery);

То же самое, никакого результата не найдено.

+1

Вам нужно, чтобы превратить ваш 'String' в [' ObjectId'] (https://docs.mongodb.com/manual/reference/method/ObjectId/). –

ответ

1

Вы должны передать idString как ObjectId.

whereQuery.put("_id", new ObjectId(idString)); 
Смежные вопросы