2016-05-26 9 views
0

So erkunde ich, wie man Mongo von Java abfragen, und ich fand mehrere verschiedene Möglichkeiten, dies zu fragen, und ich bin mir nicht sicher, ob mir etwas Nuance fehlt, damit nicht vollständig zu verstehen die Abfragen, oder sie sind identisch.Wie für mehrere, spezifische Felder Abfrage

Bisher fand ich, für Java-Treiber v3.2, dies:

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

Und ich habe gesagt, dies sollte funktionieren:

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. 

Diese Abfrage mit einem Fund gehen würde (), findOne(), distinct() und so weiter.

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

Also, sind beide richtige Ansätze? Oder ihr Zweck ist deferent

Antwort

1

Sie haben immer die Möglichkeit, die alten unhandlichen Bson-Objekte selbst zu verwenden, aber für den 3.2-Treiber würde ich lieber mit den Helper-Klassen Filter und Projektionen gehen.

So eine einfache Suche mit einigen Kriterien können nur für die Auswahl bestimmter Felder wie

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

gesendet werden, fügen Sie eine Projektion:

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

Neben der eleganteren Code des neuen API, die Abfragen tun dasselbe wie die BasicDBObject-basierten Aufrufe.

Verwandte Themen