Search in sources :

Example 1 with WriteModel

use of com.mongodb.client.model.WriteModel in project mongo-java-driver by mongodb.

the class QuickTour method main.

/**
     * Run this main method to see the output of this quick example.
     *
     * @param args takes an optional single argument for the connection string
     */
public static void main(final String[] args) {
    MongoClient mongoClient;
    if (args.length == 0) {
        // connect to the local database server
        mongoClient = new MongoClient();
    } else {
        mongoClient = new MongoClient(new MongoClientURI(args[0]));
    }
    // get handle to "mydb" database
    MongoDatabase database = mongoClient.getDatabase("mydb");
    // get a handle to the "test" collection
    MongoCollection<Document> collection = database.getCollection("test");
    // drop all the data in it
    collection.drop();
    // make a document and insert it
    Document doc = new Document("name", "MongoDB").append("type", "database").append("count", 1).append("info", new Document("x", 203).append("y", 102));
    collection.insertOne(doc);
    // get it (since it's the only one in there since we dropped the rest earlier on)
    Document myDoc = collection.find().first();
    System.out.println(myDoc.toJson());
    // now, lets add lots of little documents to the collection so we can explore queries and cursors
    List<Document> documents = new ArrayList<Document>();
    for (int i = 0; i < 100; i++) {
        documents.add(new Document("i", i));
    }
    collection.insertMany(documents);
    System.out.println("total # of documents after inserting 100 small ones (should be 101) " + collection.count());
    // find first
    myDoc = collection.find().first();
    System.out.println(myDoc.toJson());
    // lets get all the documents in the collection and print them out
    MongoCursor<Document> cursor = collection.find().iterator();
    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
    } finally {
        cursor.close();
    }
    for (Document cur : collection.find()) {
        System.out.println(cur.toJson());
    }
    // now use a query to get 1 document out
    myDoc = collection.find(eq("i", 71)).first();
    System.out.println(myDoc.toJson());
    // now use a range query to get a larger subset
    cursor = collection.find(gt("i", 50)).iterator();
    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
    } finally {
        cursor.close();
    }
    // range query with multiple constraints
    cursor = collection.find(and(gt("i", 50), lte("i", 100))).iterator();
    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
    } finally {
        cursor.close();
    }
    // Query Filters
    myDoc = collection.find(eq("i", 71)).first();
    System.out.println(myDoc.toJson());
    // now use a range query to get a larger subset
    Block<Document> printBlock = new Block<Document>() {

        @Override
        public void apply(final Document document) {
            System.out.println(document.toJson());
        }
    };
    collection.find(gt("i", 50)).forEach(printBlock);
    // filter where; 50 < i <= 100
    collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);
    // Sorting
    myDoc = collection.find(exists("i")).sort(descending("i")).first();
    System.out.println(myDoc.toJson());
    // Projection
    myDoc = collection.find().projection(excludeId()).first();
    System.out.println(myDoc.toJson());
    // Aggregation
    collection.aggregate(asList(match(gt("i", 0)), project(Document.parse("{ITimes10: {$multiply: ['$i', 10]}}")))).forEach(printBlock);
    myDoc = collection.aggregate(singletonList(group(null, sum("total", "$i")))).first();
    System.out.println(myDoc.toJson());
    // Update One
    collection.updateOne(eq("i", 10), set("i", 110));
    // Update Many
    UpdateResult updateResult = collection.updateMany(lt("i", 100), inc("i", 100));
    System.out.println(updateResult.getModifiedCount());
    // Delete One
    collection.deleteOne(eq("i", 110));
    // Delete Many
    DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
    System.out.println(deleteResult.getDeletedCount());
    collection.drop();
    // ordered bulk writes
    List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
    writes.add(new InsertOneModel<Document>(new Document("_id", 4)));
    writes.add(new InsertOneModel<Document>(new Document("_id", 5)));
    writes.add(new InsertOneModel<Document>(new Document("_id", 6)));
    writes.add(new UpdateOneModel<Document>(new Document("_id", 1), new Document("$set", new Document("x", 2))));
    writes.add(new DeleteOneModel<Document>(new Document("_id", 2)));
    writes.add(new ReplaceOneModel<Document>(new Document("_id", 3), new Document("_id", 3).append("x", 4)));
    collection.bulkWrite(writes);
    collection.drop();
    collection.bulkWrite(writes, new BulkWriteOptions().ordered(false));
    //collection.find().forEach(printBlock);
    // Clean up
    database.drop();
    // release resources
    mongoClient.close();
}
Also used : MongoClientURI(com.mongodb.MongoClientURI) ArrayList(java.util.ArrayList) Document(org.bson.Document) WriteModel(com.mongodb.client.model.WriteModel) MongoClient(com.mongodb.MongoClient) BulkWriteOptions(com.mongodb.client.model.BulkWriteOptions) Block(com.mongodb.Block) UpdateResult(com.mongodb.client.result.UpdateResult) DeleteResult(com.mongodb.client.result.DeleteResult) MongoDatabase(com.mongodb.client.MongoDatabase)

Example 2 with WriteModel

use of com.mongodb.client.model.WriteModel in project mongo-java-driver by mongodb.

the class JsonPoweredCrudTestHelper method getBulkWriteResult.

BsonDocument getBulkWriteResult(final BsonDocument arguments) {
    WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED;
    if (arguments.containsKey("writeConcern")) {
        if (arguments.getDocument("writeConcern").size() > 1) {
            throw new UnsupportedOperationException("Write concern document contains unexpected keys: " + arguments.getDocument("writeConcern").keySet());
        }
        writeConcern = new WriteConcern(arguments.getDocument("writeConcern").getInt32("w").intValue());
    }
    List<WriteModel<BsonDocument>> writeModels = new ArrayList<WriteModel<BsonDocument>>();
    for (Iterator<BsonValue> iter = arguments.getArray("requests").iterator(); iter.hasNext(); ) {
        BsonDocument cur = iter.next().asDocument();
        if (cur.get("insertOne") != null) {
            writeModels.add(new InsertOneModel<BsonDocument>(cur.getDocument("insertOne").getDocument("document")));
        } else if (cur.get("updateOne") != null) {
            writeModels.add(new UpdateOneModel<BsonDocument>(cur.getDocument("updateOne").getDocument("filter"), cur.getDocument("updateOne").getDocument("update")));
        } else {
            throw new UnsupportedOperationException("Unsupported write request type");
        }
    }
    return toResult(collection.withWriteConcern(writeConcern).bulkWrite(writeModels, new BulkWriteOptions().ordered(arguments.getBoolean("ordered", BsonBoolean.TRUE).getValue())));
}
Also used : UpdateOneModel(com.mongodb.client.model.UpdateOneModel) BsonDocument(org.bson.BsonDocument) BulkWriteOptions(com.mongodb.client.model.BulkWriteOptions) WriteConcern(com.mongodb.WriteConcern) ArrayList(java.util.ArrayList) WriteModel(com.mongodb.client.model.WriteModel) BsonValue(org.bson.BsonValue)

Aggregations

BulkWriteOptions (com.mongodb.client.model.BulkWriteOptions)2 WriteModel (com.mongodb.client.model.WriteModel)2 ArrayList (java.util.ArrayList)2 Block (com.mongodb.Block)1 MongoClient (com.mongodb.MongoClient)1 MongoClientURI (com.mongodb.MongoClientURI)1 WriteConcern (com.mongodb.WriteConcern)1 MongoDatabase (com.mongodb.client.MongoDatabase)1 UpdateOneModel (com.mongodb.client.model.UpdateOneModel)1 DeleteResult (com.mongodb.client.result.DeleteResult)1 UpdateResult (com.mongodb.client.result.UpdateResult)1 BsonDocument (org.bson.BsonDocument)1 BsonValue (org.bson.BsonValue)1 Document (org.bson.Document)1