Ich benutze mongodb Java-Treiber 3.4.Abrufen von Daten mit mongodb Java-Treiber 3.4 mit find() - Methode mit Projektion
In den mongodb Datenbankdokumente werden nach der folgenden Struktur gespeichert:
{
"_id" : ObjectId("595a9fc4fe3f36402b7edf0e"),
"id" : "123",
"priceInfo" : [
{object1: value1}, {object2: value2}, {object3: value3}
]
}
Um die „PREISInfoEUR“ -Array eines Dokuments mit einer bestimmten ID abzurufen, ich den folgenden Code geschrieben:
collection.find(eq("id", id)).first().projection(fields(include("priceInfo"), excludeId()));
ich schrieb diesen Code auch in der Dokumentation nach, die Sie hier finden können:
http://mongodb.github.io/mongo-java-driver/3.4/javadoc/?com/mongodb/client/model/Projections.html
Das Problem ist, dass meine IDE diesen Code nicht akzeptiert.
Es gibt mir die folgende Fehlermeldung:
Ich habe keine Ahnung, warum dieser Code funktioniert nicht. Zuerst schlug die IDE vor, mehrere Klassen zu integrieren - was ich tat. Aber danach habe ich immer noch eine Fehlermeldung, nämlich die, die du oben siehst.
Was ist falsch an dem Code? Wie kann ich das priceInfo-Array eines Dokuments mit ID-ID abrufen?
******************************** UPDATE ************* *********************
Wie pro Antrag, hier ist die ganze Klasse:
package DatabaseAccess;
import Models.GasStation;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Projections.excludeId;
import static com.mongodb.client.model.Projections.fields;
import static com.mongodb.client.model.Projections.include;
import com.mongodb.client.model.Updates;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.logging.Level;
import org.bson.Document;
public class databaseAccess {
private final String DB_HOST = "localhost";
private final int DB_PORT = 27017;
private final String DB_NAME = "db1";
private final String DB_COLLECTION = "prices";
private final MongoClient mongoClient;
private final MongoDatabase database;
private final MongoCollection<Document> collection;
public databaseAccess(){
mongoClient = new MongoClient(DB_HOST, DB_PORT);
database = mongoClient.getDatabase(DB_NAME);
collection = database.getCollection(DB_COLLECTION);
}
public String readFromDB(String id){
collection.find(eq("id", id)).first().projection(fields(include("priceInfo"), excludeId()));
return null;
}
}
Können Sie bitte den vollständigen Code der Klasse (mit Importen) zeigen. – Spunc
Mögliches Duplikat von [Wie alle Elemente eines verschachtelten Arrays in MongoDB Java gefunden/gefunden werden können] (https://stackoverflow.com/questions/41916428/how-to-retrieve-find-all-elements-of-a-nested -array-in-mongodb-java) – Veeram
es ist kein Duplikat .... das ist ein Array in meinem Fall ist nicht wichtig. Ich möchte das Array als Ganzes erhalten. Ich benutzte den gleichen Code wie der, der die genehmigte Antwort lieferte (abgesehen davon, dass ich den "map ..." -Teil weglasse, da ich, wie bereits erwähnt, nicht daran interessiert bin, einzelne Elemente aus dem Array abzurufen) ... die Sache ist: warum? Dieser Code gibt mir eine Fehleranzeige? –