2016-05-26 4 views
0

Итак, я изучаю, как запрашивать mongo из java, и я нашел несколько разных способов запроса этого, и я не уверен, что мне не хватает какого-то нюанса, запросы, или они одинаковы.Как запросить несколько конкретных полей

До сих пор я нашел для Java v3.2 драйвера, это:

collection.find().projection(fields(include("x", "y"), excludeId())) 

И мне сказали, что это должно работать:

BasicDBobject query = new BasicDBObject("x", x).append("y", y);//This example may not compile, I haven't tried it, I'm more talking about the idea and concept. 

Этот запрос будет идти с находкой (), findOne(), distinct() и т. д.

 String fields = "averageSpeed"; 
     coll = db.getCollection(strMongoCollection); 
     coll.find(fields, query)); 

Итак, оба подходят? Или его назначение отложено

ответ

1

У вас всегда есть возможность использовать старые неудобные объекты Bson самостоятельно, но для драйвера 3.2 лучше бы я пошел со вспомогательными классами фильтров и проекций.

Таким образом, простой поиск с некоторыми критериями могут быть отправлены в качестве

collection.find(Filters.eq("myfield", "myvalue")) 

Для выбора только определенные поля, вы добавляете проекцию:

collection.find(Filters.eq("myfield", "myvalue")) 
    .projection(Projections.include("myfield", "anotherfield")) 

Помимо более элегантного кода нового API, запросы выполняют те же действия, что и вызовы на основе BasicDBObject.