MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да изпълним собствена заявка на MongoDB (JSON) само с помощта на mongo-java-driver?

Ако въпросът ви е:

Мога ли да предам горния низ в драйвера на Java и да го накарам да го изпълни?

Тогава вие можете използвайте командата 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 командата е отхвърлена и нейното използване не се препоръчва. Java драйверът на MongoDB може да се използва за изпълнение на вашето агрегиране, но не в неговата „низова форма“, вместо това бихте използвали помощните средства за агрегиране на драйвера на Java, за да създадете Java форма на вашата команда за агрегиране. Много подробности за това в документите.

Ето един (нетестван) пример за използване на 3.x MongoDB Java драйвер ...

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])))
));

.. това може да ви помогне да видите формата на превод от шел скрипт към Java.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. (MongoDB Java) $push в масив

  2. Добавяне на низ в края на съществуващо поле в MongoDB

  3. Mongodb масив $push и $pull

  4. Самостоятелно хостван MongoDB

  5. MongoDB и PostgreSQL мисли