Jika pertanyaan Anda adalah:
Bisakah saya meneruskan string di atas ke driver Java dan meminta driver menjalankannya?
Maka Anda bisa gunakan perintah db.eval. Misalnya:
MongoDatabase database = mongoClient.getDatabase("...");
Bson command = new Document("eval", "db.orders.aggregate([\n" +
" {\n" +
" $unwind: \"$specs\"\n" +
" },\n" +
" {\n" +
" $lookup:\n" +
" {\n" +
" from: \"inventory\",\n" +
" localField: \"specs\",\n" +
" foreignField: \"size\",\n" +
" as: \"inventory_docs\"\n" +
" }\n" +
" },\n" +
" {\n" +
" $match: { \"inventory_docs\": { $ne: [] } }\n" +
" }\n" +
"])");
Document result = database.runCommand(command);
Tapi ... db.eval
perintah sudah usang dan penggunaannya tidak disarankan. Driver Java MongoDB dapat digunakan untuk mengeksekusi agregasi Anda tetapi tidak dalam 'bentuk string', sebagai gantinya Anda akan menggunakan pembantu agregasi driver Java untuk membuat bentuk Java dari perintah agregasi Anda. Banyak detail tentang ini di dokumen.
Berikut adalah contoh (belum diuji) menggunakan 3.x MongoDB Java Driver ...
MongoCollection<Document> collection = mongoClient.getDatabase("...").getCollection("...");
AggregateIterable<Document> documents = collection.aggregate(Arrays.asList(
// the unwind stage
new Document("$unwind", "$specs"),
// the lookup stage
new Document("$lookup", new Document("from", "inventory")
.append("localField", "specs")
.append("foreignField", "size")
.append("as", "inventory_docs")),
// the match stage
new Document("$match", new Document("inventory_docs", new BasicDBObject("$ne", new String[0])))
));
.. ini mungkin membantu Anda untuk melihat bentuk terjemahan dari skrip shell ke Java.