2015-06-09 2 views
2

Я использую MongoDB с java 3.0 driver. В руководстве я нашел только find() и findOne(), которые дадут мне весь документ. У меня есть сценарий, как я должен получить значение _id путем запроса. например, в SQL выберите _id из имени таблицы.Запрос на полях MongoDB

{ 
     "_id" : ObjectId("557660c074cd60207e337aed"), 
     "contactMethodId" : [ 
       { 
         "contactMethodId" : "contactMethodId", 
         "contactMethodUsageTypeCode" : null, 
         "contactMethodTypeCode" : "contactMethodTypeCode", 
         "contactMethodValue" : "contactMethodValue", 
         "contactContentTypeCode" : "contactContentTypeCode", 
         "contactContentMaxSize" : "contactContentMaxSize", 
         "comment" : "comment", 
         "preferredInt" : "preferredInd", 
         "effectiveStartDateOfContact" : "effectiveStartDateOfContact", 
         "effectiveEndDateOfContact" : "effectiveEndDateOfContact", 
         "standardizedIndOfContact" : "standardizedIndOfContact", 
         "lastVerifiedDateOfContact" : "lastVerifiedDateOfContact" 
       } 
     ] 
} 

_id по умолчанию.

Я хочу что-то вроде выбрать _id из названия таблицы, и я должен получить ObjectId("557660c074cd60207e337aed") в java. Какие-либо предложения.

+1

Используйте [проекция] (http://docs.mongodb.org/manual/tutorial/ project-fields-from-query-results /) в поле '_id'. 'db.coll.find ({}, {'_ id': 1})'. – thegreenogre

+0

Как я могу это сделать в java? –

+0

Следуйте за [это] (http://www.mkyong.com/mongodb) очень полезно для начинающих в java с mongoDB – Yogesh

ответ

0
MongoIterable<Document> = mongoClient.getDatabase("foo") 
    .getCollection("bob") 
    .find() 
    .projection(new Document("_id", 1)) 
0

Вы можете использовать следующие:

BasicDBObject projection = new BasicDBObject(); 
projection.put("_id",1); 
DBCursor cursor = collection.find(new BasicDBObject(),projection); 

А затем считаны с помощью петли на курсор.

while (cursor.hasNext()) { 
    System.out.println("Result : -"+cursor.next()); 
} 
+0

Я думаю, что это более старая версия, я использую драйвер java 3.0, все эти методы устарели. –

+0

@ShaikMujahidAli Не тестировалось с 3,0, но должно работать – Vishwas

+0

Я тестировал это не работает с 3.0 –

0

Проверить этот код, протестирована с Монго версии 3.0.3 и Монго Java версии драйвера 3.0.1

import com.mongodb.BasicDBObject; 
import com.mongodb.DB; 
import com.mongodb.DBCollection; 
import com.mongodb.DBCursor; 
import com.mongodb.Mongo; 
public class demo { 
    public static void main(String[] args) throws Exception { 
    Mongo mongo = new Mongo("localhost", 27017); // set host and port of mongo 
    DB db = mongo.getDB("demo"); // set DB name 
    DBCollection collection = db.getCollection("collectionName"); // set collection Name 
    BasicDBObject query = new BasicDBObject(); 
    BasicDBObject project = new BasicDBObject(); 
    project.put("_id", 1); // set project to get _id 
    DBCursor cursorDoc = collection.find(query, project); // find query with projection 
    while(cursorDoc.hasNext()) { 
     BasicDBObject object = (BasicDBObject) cursorDoc.next(); 
     String _id = object.get("_id").toString(); // If required convert the _id to String 
     System.out.println(object); // print _id with object 
     System.out.println(_id); // print _id as a String 
    } 
    } 
} 
Смежные вопросы