Я использую java-драйвер mongodb 3.4.
В базе данных mongodb документы сохраняются в следующей структуре:
{
"_id" : ObjectId("595a9fc4fe3f36402b7edf0e"),
"id" : "123",
"priceInfo" : [
{object1: value1}, {object2: value2}, {object3: value3}
]
}
Чтобы получить массив «priceInfo» документа с определенным идентификатором, я написал следующий код:
collection.find(eq("id", id)).first().projection(fields(include("priceInfo"), excludeId()));
Я написал этот код в соответствии с документацией, которую вы можете найти здесь:
http://mongodb.github.io/mongo-java-driver/3.4/javadoc/?com/mongodb/client/model/Projection.html.
Проблема в том, что моя IDE не примет этот код.
Это дает мне следующую индикацию ошибки:
Я понятия не имею, почему этот код не работает. Сначала IDE предлагала включить несколько классов, что я и сделал. Но после этого у меня все равно появлялась индикация ошибки, а именно та, которую вы видите выше.
Что не так с кодом? Как я могу получить массив priceInfo документа с идентификатором id?
********************************ОБНОВИТЬ***************** *****************
По запросу вот весь класс:
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;
}
}