Итак, у меня есть рабочий код Python для mongoDB, и для класса, в котором я сейчас нахожусь, я пытаюсь поместить этот код в Java.На данный момент у меня все работает правильно, кроме моей агрегатной части, и команды find, которая должна дать несколько результатов.
Я провел некоторое исследование, которое показало, что оно должно быть в цикле, чтобы правильно его распечатать, но я получаю ту же ошибку.Также я нашел кое-что о том, что, возможно, это курсор, который, возможно, истекает, это довольно большой файл, с которым я работаю, но некоторые результаты для этого не работают, например .noCursorTimeout (true).
Вот мои настройки для агрегата:
public class Aggregate {
public static Object AggregateDocument(String input) {
//Get mongo set up
@SuppressWarnings("resource")
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("market");
MongoCollection<Document> collection = database.getCollection("stocks");
//Get the documents set up for each section of the aggregate command
//Set up the Match
Document match = new Document("$match", new Document("Sector", input));
//Set up the Project
Document project1 = new Document("_id", 1);
Document project2 = project1.append("Shares Outstanding", 1);
Document project3 = project2.append("Industry", 1);
Document project4 = project3.append("Sector", 1);
Document project = new Document("$project", project4);
//Set up the Group
Document group1 = new Document("_id", "$Industry");
Document group2 = group1.append("Total Outstanding Shares", new Document("$sum", "$Shares Outstanding"));
Document group = new Document("$group", group2);
//Call the aggregate command
AggregateIterable<Document> agg = collection.aggregate(Arrays.asList(match, project, group));
//Print out the result
for (Document printAggs : agg)
{
System.out.println(printAggs);
}
return agg;
}
}
Вот мой код для моей команды поиска
public class FindStr {
public static Object FindString(String input) {
//Get mongo set up
@SuppressWarnings("resource")
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("market");
MongoCollection<Document> collection = database.getCollection("stocks");
//Get the documents set up
Document doc1 = new Document("Industry", input);
Document doc2 = new Document("Ticker", 1);
//Set up the find() command
MongoCursor<Document> cursor = collection.find(doc1).projection(doc2).noCursorTimeout(true).iterator();
//Print out the results
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
return cursor;
}
}
Для команды агрегата я должен получить списокдокументы, которые соответствуют этой совокупности, и почти одинаковы для команды find string.То, что я получаю, похоже на результаты друг друга, например вот что я получаю для вывода строки поиска:
Enter in a string to search for (enter it in quotes), or b to go back:
"Medical Laboratories & Research"
Mar 30, 2019 5:52:56 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Mar 30, 2019 5:52:56 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, all=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
Mar 30, 2019 5:52:56 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Opened connection [connectionId{localValue:3, serverValue:74}] to localhost:27017
Mar 30, 2019 5:52:56 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 6]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, roundTripTimeNanos=477995}
Mar 30, 2019 5:52:56 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Opened connection [connectionId{localValue:4, serverValue:75}] to localhost:27017