blob: cb4c4541392060a35d315347a77a075ecd2970f7 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.storm.mongodb.common;
import java.util.List;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.InsertManyOptions;
import com.mongodb.client.model.UpdateOptions;
public class MongoDBClient {
private MongoClient client;
private MongoCollection<Document> collection;
public MongoDBClient(String url, String collectionName) {
//Creates a MongoURI from the given string.
MongoClientURI uri = new MongoClientURI(url);
//Creates a MongoClient described by a URI.
this.client = new MongoClient(uri);
//Gets a Database.
MongoDatabase db = client.getDatabase(uri.getDatabase());
//Gets a collection.
this.collection = db.getCollection(collectionName);
}
/**
* Inserts one or more documents.
* This method is equivalent to a call to the bulkWrite method.
* The documents will be inserted in the order provided,
* stopping on the first failed insertion.
*
* @param documents
*/
public void insert(List<Document> documents, boolean ordered) {
InsertManyOptions options = new InsertManyOptions();
if (!ordered) {
options.ordered(false);
}
collection.insertMany(documents, options);
}
/**
* Update all documents in the collection according to the specified query filter.
* When upsert set to true, the new document will be inserted if there are no matches to the query filter.
*
* @param filter
* @param update
* @param upsert
*/
public void update(Bson filter, Bson update, boolean upsert) {
UpdateOptions options = new UpdateOptions();
if (upsert) {
options.upsert(true);
}
collection.updateMany(filter, update, options);
}
/**
* Closes all resources associated with this instance.
*/
public void close(){
client.close();
}
}