/* Mongodb course - M101J * Copyright (c) 2015 */ package com.mongodb.m101j.week2.hw2_3; import java.util.ArrayList; import java.util.List; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.ObjectId; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Sorts; /** * TODO Add element description, main objective and relations * * @author wilson * */ public class Homework2_3 { public static void main(String... args) { try (MongoClient client = new MongoClient()) { MongoDatabase db = client.getDatabase("students"); MongoCollection<Document> coll = db.getCollection("grades"); Bson sort = Sorts.ascending("student_id", "score"); Bson filter = Filters.eq("type", "homework"); List<Document> all = coll.find(filter).sort(sort).into(new ArrayList<Document>()); List<ObjectId> toRemoveIds = new ArrayList<ObjectId>(); for (int i = 0; i < all.size(); i++) { if (i % 2 == 0) { Document doc = all.get(i); toRemoveIds.add(doc.getObjectId("_id")); } } if (toRemoveIds.size() != 200) { throw new RuntimeException("Number of documents to remove is not correct"); } Bson filterToRemove = Filters.in("_id", toRemoveIds); long deleteCount = coll.deleteMany(filterToRemove).getDeletedCount(); System.out.println(String.format("\nGrades has deleted: %d\n", deleteCount)); System.out.println(String.format("Count after deleted documents: %d", coll.count())); } } }