Nếu câu hỏi của bạn là:
Tôi có thể chuyển chuỗi trên vào trình điều khiển Java và để trình điều khiển thực thi nó không?
Sau đó, bạn có thể sử dụng lệnh db.eval. Ví dụ:
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);
Nhưng ... db.eval
lệnh không được chấp nhận và cách sử dụng nó không được khuyên dùng. Trình điều khiển Java MongoDB có thể được sử dụng để thực thi tổng hợp của bạn nhưng không phải ở 'dạng chuỗi' của nó, thay vào đó bạn sẽ sử dụng trình trợ giúp tổng hợp của trình điều khiển Java để tạo một biểu mẫu Java cho lệnh tổng hợp của bạn. Nhiều chi tiết về điều này trong tài liệu.
Đây là một ví dụ (chưa được kiểm tra) sử dụng Trình điều khiển Java 3.x MongoDB ...
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])))
));
.. điều này có thể giúp bạn xem dạng dịch từ shell script sang Java.