MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để thực thi truy vấn gốc MongoDB (JSON) chỉ sử dụng mongo-java-driver?

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Duy trì bộ bản sao MongoDB trong đám mây bằng cách sử dụng Ansible

  2. Thiết kế lược đồ cơ sở dữ liệu MongoDB

  3. Làm cách nào để chèn một tài liệu vào mongodb bằng cách sử dụng mongoose và lấy id đã tạo?

  4. MongoDB không thể tìm thấy thư mục dữ liệu sau khi nâng cấp lên Mac OS 10.15 (Catalina)

  5. Cách chuyển đổi chuỗi thành objectId trong LocalField cho $ lookup Mongodb