Jadi saya memiliki kode Python yang berfungsi untuk mongoDB, dan untuk kelas saya sekarang, saya mencoba memasukkan kode ini ke Java. Saat ini saya memiliki semuanya bekerja dengan benar selain porsi agregat saya, dan perintah find yang seharusnya menghasilkan banyak hasil.

Saya telah melakukan beberapa penelitian yang menunjukkan kepada saya bahwa itu harus dalam satu lingkaran agar dapat dicetak dengan benar, tetapi saya mendapatkan kesalahan yang sama. Saya juga menemukan beberapa hal tentang mungkin kursor yang waktunya habis, ini adalah file yang cukup besar yang sedang saya kerjakan, tetapi beberapa hasil untuk itu tidak berfungsi seperti .noCursorTimeout(true).

Inilah pengaturan saya untuk agregat:

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;
    }
}

Ini kode saya untuk perintah Temukan saya

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;
    }

}

Untuk perintah agregat saya seharusnya mendapatkan daftar dokumen yang sesuai dengan agregat itu, dan hampir sama untuk perintah find string. Apa yang saya dapatkan adalah hasil yang mirip satu sama lain, misalnya inilah yang saya dapatkan untuk output string find:

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
0
Dragohnz 31 Maret 2019, 01:23

1 menjawab

Jawaban Terbaik

Jadi saya memposting jawaban saya sendiri karena ternyata kodenya berfungsi dengan baik. Input saya salah, dengan cara saya belajar mengaturnya untuk MongoDB, saya mengaturnya untuk mencari input, dan biasanya format untuk json stuff adalah {"key":"value"}, jadi ketika saya memasukkan bagian nilai, saya ingin itu dalam tanda kutip untuk itu. Tapi ternyata jika Anda tidak memasukkannya ke dalam tanda kutip, itu berfungsi dengan baik seperti yang dimaksudkan. Saya membuatnya berfungsi dengan baik di Python jadi saya punya contoh kerja untuk dilihat. Juga, 1 itu di bagian proyek tidak akan berfungsi sampai saya mengeluarkannya kembali dari format string dan ke dalam format integer, 1 itu benar-benar berarti "benar", untuk memproyeksikan hanya kunci-kunci itu.

0
Dragohnz 5 April 2019, 01:04