Mongodb Java - Как вернуть ограниченные поля с помощью find() или findOne()

С драйвером Java Mongodb я ищу способ вернуть только ограниченные поля с помощью find() или findOne(). Например, у меня есть коллекция "people" с полями: "id", "name", "surname", "address", "city"... и я просто хочу вернуть "name" и "surname"

Я искал в Интернете, и я просто нашел этот пример кода Java Mongodb: http://vsbabu.org/mt/archives/2010/03/02/simple_mongodbjava_example.html

Ответ 1

Вы можете передать другой DBObject с именами полей и передать его здесь:

cur = coll.find(new BasicDBObject("id", 6655), your_dbobject_with_field_names);

Вот документация API

Ответ 2

Если вы используете Java Driver 3.1, вы можете использовать Projections:

collection.find().projection(Projections.include("name", "surname"));

Ответ 3

Эти коды будут обрабатывать вашу проблему. (Java driver 3.0.2)

 BasicDBObject fields = new BasicDBObject();
 //fields.put("_id", 0);
 fields.put("title", 0);

 DBCursor cursor = collection.find(new BasicDBObject(),fields).sort(new BasicDBObject("_id", 1));

Ответ 4

этот код работает для меня:

String json = "{_id:0,name:1,surname:1}";
Bson bson =  BasicDBObject.parse( json );
FindIterable<Document> iterDoc = collection.find().projection(bson);