List of usage examples for com.mongodb.client MongoCollection aggregate
AggregateIterable<TDocument> aggregate(List<? extends Bson> pipeline);
From source file:data.ProjectPhase.java
License:Open Source License
public static ProjectPhase getByProjectAndPhaseName(String projectName, String projectPhaseName, DBManagerMongo manager) throws Exception { MongoCollection<Document> coll = manager.getDb().getCollection("project_phase"); Bson lookup = new Document("$lookup", new Document("from", "project").append("localField", "project_id").append("foreignField", "id") //local field, remote field .append("as", "project")); Bson match = new Document("$match", new Document("$and", Arrays.asList(new Document("project.name", projectName), new Document("name", projectPhaseName)))); List<Bson> filters = new ArrayList<>(); filters.add(lookup);//w w w.ja v a 2 s.c om filters.add(match); AggregateIterable<Document> it = coll.aggregate(filters); return extractPhase(it.first(), manager); }
From source file:data.User.java
License:Open Source License
public static ArrayList<User> getAvailableUsersFor(int projectId, DBManagerMongo manager) throws Exception { ArrayList<User> list = new ArrayList<>(); MongoCollection<Document> coll = manager.getDb().getCollection("user"); Bson lookup = new Document("$lookup", new Document("from", "project_member").append("localField", "login_name") .append("foreignField", "user_login_name") //local field, remote field .append("as", "project_member")); List<Bson> filters = new ArrayList<>(); filters.add(lookup);/* w w w . ja va 2 s . c om*/ AggregateIterable<Document> it = coll.aggregate(filters); for (Document row : it) { boolean add = true; ArrayList<Document> members = (ArrayList<Document>) row.get("project_member"); for (Document doc : members) { if (doc.getInteger("project_id") == projectId) { add = false; break; } } if (add) list.add(extractUser(row)); } return list; }
From source file:examples.tour.QuickTour.java
License:Apache License
/** * Run this main method to see the output of this quick example. * * @param args takes an optional single argument for the connection string *//*www . jav a2s .c o m*/ 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>() { 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(); }
From source file:module.script.epilung.SearchSamples.java
License:Open Source License
public SearchSamples() { // ===== Connection ===== MongoClient mongoClient = MongoUtil.buildMongoClient(); MongoDatabase db = mongoClient.getDatabase("epimed_experiments"); MongoCollection<Document> collectionSamples = db.getCollection("samples"); MongoCollection<Document> collectionPlatforms = db.getCollection("platforms"); Bson filters = Filters.and(//from w w w. ja v a2s . c om Filters.in("exp_group.id_platform", new String[] { "GPL13534", "GPL8490", "GPL21145" }), Filters.eq("exp_group.id_tissue_status", 1), Filters.ne("exp_group.id_topology", null)); /* List<Document> list = collectionSamples .find(filters) .into(new ArrayList<Document>()); */ List<Document> list = collectionSamples.aggregate(Arrays.asList(Aggregates.match(filters), Aggregates.group("$exp_group.topology", Accumulators.sum("total", 1)), Aggregates.sort(Sorts.orderBy(Sorts.descending("total"))))).into(new ArrayList<Document>()); for (int i = 0; i < list.size(); i++) { System.out.println((i + 1) + " " + list.get(i)); } collectionPlatforms.find(Filters.regex("title", ".*ethyl.*")).forEach(printBlock); mongoClient.close(); }
From source file:module.script.QueryAvailableData.java
License:Open Source License
public QueryAvailableData() { // ===== Service ===== FormatService formatService = new FormatService(); // ===== Session Mongo ===== MongoClient mongoClient = MongoUtil.buildMongoClient(); MongoDatabase db = mongoClient.getDatabase("epimed_experiments"); MongoCollection<Document> collectionSeries = db.getCollection("series"); MongoCollection<Document> collectionSamples = db.getCollection("samples"); // ===== Print block ===== Block<Document> printBlock = new Block<Document>() { public void apply(final Document document) { System.out.println(document.toJson()); }//from w ww. j ava 2s.co m }; // ===== Group by topology ===== // db.getCollection('samples').aggregate({ $group: { "_id" : "$exp_group.topology", "total" : {$sum : 1} }}, {$sort : {total : -1}} ) /* List<Document> listDocuments = collectionSamples.aggregate( Arrays.asList( Aggregates.group("$exp_group.topology", Accumulators.sum("total", 1)), Aggregates.sort(Sorts.orderBy(Sorts.descending("total"))) )) .into(new ArrayList<Document>()); */ // ===== Group by sample ===== /* List<Document> listSeries = collectionSeries .find() .projection(Projections.fields(Projections.include("title"))) .sort(Sorts.ascending("_id")) .into(new ArrayList<Document>()); for (Document doc : listSeries) { String idSeries = doc.getString("_id"); Long nbSamples = collectionSamples.count((Filters.eq("series", idSeries))); doc.append("nbSamples", nbSamples); } display(listSeries); */ // === Export Geo for a list of idSeries === // String[] listIdSeries = {"GSE11092","GSE13309", "GSE13159"}; /* List<Document> docExpGroup = collectionSamples .find(Filters.in("series", listIdSeries)) .projection(Projections.fields(Projections.include("exp_group"), Projections.excludeId())) .into(new ArrayList<Document>()); // display(docExpGroup); List<String> header = formatService.extractHeader(docExpGroup, "exp_group"); List<Object> data = formatService.extractData(docExpGroup, header, "exp_group"); System.out.println(header); displayMatrix(data); */ // List<Object> listObjects = formatService.convertHeterogeneousMongoDocuments(docExpGroup, "exp_group"); // displayMatrix(listObjects); // List<Object> listObjects = formatService.convertHomogeneousMongoDocuments(listDocuments); // === Find series === String[] listIdSamples = { "GSM80908", "GSM274639", "GSM274638", "GSM280213" }; List<Document> listDocuments = collectionSamples .aggregate(Arrays.asList(Aggregates.match(Filters.in("_id", listIdSamples)), Aggregates.group("$main_gse_number"), Aggregates.sort(Sorts.orderBy(Sorts.ascending("main_gse_numbe"))))) .into(new ArrayList<Document>()); List<Object> listObjects = formatService.convertHomogeneousMongoDocuments(listDocuments); displayMatrix(listObjects); mongoClient.close(); }
From source file:module.test.SearchPlatforms.java
License:Open Source License
public SearchPlatforms() { // ===== Connection ===== MongoClient mongoClient = MongoUtil.buildMongoClient(); MongoDatabase db = mongoClient.getDatabase("epimed_experiments"); MongoCollection<Document> collectionSamples = db.getCollection("sample"); MongoCollection<Document> collectionPlatforms = db.getCollection("platform"); List<Document> list = collectionSamples .aggregate(Arrays.asList(Aggregates.group("$exp_group.id_platform", Accumulators.sum("total", 1)), Aggregates.sort(Sorts.orderBy(Sorts.descending("total"))))) .into(new ArrayList<Document>()); for (int i = 0; i < list.size(); i++) { System.out.println((i + 1) + " " + list.get(i)); }//from w ww . j a va 2s.c o m // collectionPlatforms.find(Filters.regex("title", ".*ethyl.*")).forEach(printBlock); collectionPlatforms.find(Filters.eq("id_organism", "9606")).forEach(printBlock); mongoClient.close(); }
From source file:org.apache.beam.sdk.io.mongodb.AggregationQuery.java
License:Apache License
@Override public MongoCursor<Document> apply(MongoCollection<Document> collection) { if (bucket() != null) { if (mongoDbPipeline().size() == 1) { mongoDbPipeline().add(bucket()); } else {// w w w.java 2s .c o m mongoDbPipeline().set(mongoDbPipeline().size() - 1, bucket()); } } return collection.aggregate(mongoDbPipeline()).iterator(); }
From source file:org.apache.nifi.processors.mongodb.RunMongoAggregation.java
License:Apache License
@Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { FlowFile flowFile = null;//from w w w . ja va2 s .co m if (context.hasIncomingConnection()) { flowFile = session.get(); if (flowFile == null && context.hasNonLoopConnection()) { return; } } final String query = context.getProperty(QUERY).evaluateAttributeExpressions(flowFile).getValue(); final Boolean allowDiskUse = context.getProperty(ALLOW_DISK_USE).asBoolean(); final String queryAttr = context.getProperty(QUERY_ATTRIBUTE).evaluateAttributeExpressions(flowFile) .getValue(); final Integer batchSize = context.getProperty(BATCH_SIZE).asInteger(); final Integer resultsPerFlowfile = context.getProperty(RESULTS_PER_FLOWFILE).asInteger(); final String jsonTypeSetting = context.getProperty(JSON_TYPE).getValue(); final String dateFormat = context.getProperty(DATE_FORMAT).evaluateAttributeExpressions(flowFile) .getValue(); configureMapper(jsonTypeSetting, dateFormat); Map<String, String> attrs = new HashMap<>(); if (queryAttr != null && queryAttr.trim().length() > 0) { attrs.put(queryAttr, query); } MongoCursor<Document> iter = null; try { MongoCollection<Document> collection = getCollection(context, flowFile); List<Bson> aggQuery = buildAggregationQuery(query); AggregateIterable<Document> it = collection.aggregate(aggQuery).allowDiskUse(allowDiskUse); ; it.batchSize(batchSize != null ? batchSize : 1); iter = it.iterator(); List<Document> batch = new ArrayList<>(); while (iter.hasNext()) { batch.add(iter.next()); if (batch.size() == resultsPerFlowfile) { writeBatch(buildBatch(batch), flowFile, context, session, attrs, REL_RESULTS); batch = new ArrayList<>(); } } if (batch.size() > 0) { writeBatch(buildBatch(batch), flowFile, context, session, attrs, REL_RESULTS); } if (flowFile != null) { session.transfer(flowFile, REL_ORIGINAL); } } catch (Exception e) { getLogger().error("Error running MongoDB aggregation query.", e); if (flowFile != null) { session.transfer(flowFile, REL_FAILURE); } } finally { if (iter != null) { iter.close(); } } }
From source file:org.cleaner.mongo.FindDuplicatesByMd5.java
License:Open Source License
public void find(MongoCollection<Document> collection) { writeOutDuplicates(collection.aggregate(getPipeline())); }
From source file:org.codinjutsu.tools.nosql.mongo.logic.SingleMongoClient.java
License:Apache License
private MongoResult aggregate(MongoQueryOptions mongoQueryOptions, MongoResult mongoResult, MongoCollection<Document> collection) { AggregateIterable<Document> aggregate = collection.aggregate(mongoQueryOptions.getOperations()); aggregate.useCursor(true);/*from ww w . j a v a 2 s. co m*/ int index = 0; MongoCursor<Document> iterator = aggregate.iterator(); while (iterator.hasNext() && index < mongoQueryOptions.getResultLimit()) { mongoResult.add(iterator.next()); } return mongoResult; }