यदि आपका प्रश्न है:
<ब्लॉकक्वॉट>क्या मैं उपरोक्त स्ट्रिंग को जावा ड्राइवर में पास कर सकता हूं और क्या ड्राइवर इसे निष्पादित कर सकता है?
तब आप कर सकते थे db.eval कमांड का उपयोग करें। उदाहरण के लिए:
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);
लेकिन ... db.eval
कमांड को हटा दिया गया है और इसके उपयोग की सलाह नहीं दी जाती है। MongoDB जावा ड्राइवर का उपयोग आपके एकत्रीकरण को निष्पादित करने के लिए किया जा सकता है, लेकिन इसके 'स्ट्रिंग फॉर्म' में नहीं, इसके बजाय आप अपने एग्रीगेशन कमांड का जावा फॉर्म बनाने के लिए जावा ड्राइवर के एग्रीगेशन हेल्पर्स का उपयोग करेंगे। इसके बारे में बहुत सारे विवरण डॉक्स में हैं।
यहाँ एक 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])))
));
.. यह आपको शेल स्क्रिप्ट से जावा में अनुवाद के रूप को देखने में मदद कर सकता है।