MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menjalankan kueri asli MongoDB (JSON) hanya menggunakan driver mongo-java?

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pengantar tipe data MongoDB

  2. otentikasi mongodb dengan string koneksi

  3. Hentikan Mongoose dari membuat properti _id untuk item larik sub-dokumen

  4. Mongodb PHP - Integer dengan desimal

  5. mongodb - Temukan dokumen dengan nilai integer terdekat