MongoDB_Java操作实例

来源:互联网 发布:tensorflow翻译 编辑:程序博客网 时间:2024/06/05 10:42
public class MyMongo{        private void test() {            // 1.获取连接:MongoClient               MongoCredential credential = MongoCredential.createCredential("user","database","password".toCharArray());     //(user,database,password)        MongoClient mongoClient = new MongoClient(new ServerAddress("192.168.6.186", 27017), Arrays.asList(credential));        // 2.获取数据库:MongoDatabase            MongoDatabase database = mongoClient.getDatabase("mydb");            //3. 进入某个文档集:MongoCollection            MongoCollection<Document> collection = database.getCollection("test");            //4.插入数据:insertOne(),insertMany()          Document doc = new Document("name", "MongoDB")             .append("type", "database").append("count", 1)             .append("info", new Document("x", 203).append("y", 102));            collection.insertOne(doc);            List<Document> documents = new ArrayList<Document>();            for (int i = 0; i < 100; i++) {                documents.add(new Document("i", i));             }         collection.insertMany(documents);           //5.读取数据          System.out.println(collection.count());             Document myDoc = collection.find().first();            System.out.println(myDoc.toJson());         //①读取全部数据            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());             }             //③ 根据条件获取某部分文档           Document myDoc = collection.find(eq("i", 71)).first();             System.out.println(myDoc.toJson());             // ④通过查询语句一次性获取多个数据             Block<Document> printBlock = new Block<Document>() {                 @Override                 public void apply(final Document document) {                     System.out.println(document.toJson());                 }              };             // 获得所有大于50的             collection.find(gt("i", 50)).forEach(printBlock);             // 大于50 小于 100             collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);             // 对输出文档进行排序,-1为递减,1为递增             Document myDoc = collection.find(exists("i"))             .sort(new BasicDBObject("i", -1)).first();             System.out.println(myDoc.toJson());             // 选择性输出结果中的元素,0为不显示,1为显示             BasicDBObject exclude = new BasicDBObject();             exclude.append("_id", 0);             exclude.append("count", 0);             exclude.append("name", 1);             exclude.append("info", 1);             Document myDoc = collection.find().projection(exclude).first();             System.out.println(myDoc.toJson());             //6.修改数据库中的数据            // $inc 对指定的元素加             // $mul 乘             // $rename 修改元素名称             // $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改             // $set 修改指定元素的值             // $unset 移除特定的元素             // $min 如果原始数据更大则不修改,否则修改为指定的值             // $max 与$min相反             // $currentDate 修改为目前的时间             collection.updateOne(eq("i", 10), new Document("$set", new Document("i", 110)));          // 获取全部文档,可以看到以前10的地方变成了110             for (Document cur : collection.find()) {                System.out.println(cur.toJson());             }             // 批量修改数据并且返回修改的结果,将所有小于100的结果都加100             UpdateResult updateResult = collection.updateMany(lt("i", 100), new Document("$inc", new Document("i", 100)));             //  显示发生变化的行数             System.out.println(updateResult.getModifiedCount());             //获取全部文档,可以看到除了刚才修改的110其他的全为了100             for (Document cur : collection.find()) {                System.out.println(cur.toJson());             }             //7.删除数据          // 删除第一个符合条件的数据             collection.deleteOne(eq("i", 110));             //获取全部文档,可以看到没有110这个数了                 // 删除所有符合条件的数据,并且返回结果             DeleteResult deleteResult = collection.deleteMany(gte("i", 100));             // 输出删除的行数             System.out.println(deleteResult.getDeletedCount());             //获取全部文档,所有i>=100的数据都没了             //8. 程序块,一次执行多条语句         // 按照语句先后顺序执行             collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document("_id", 4)),          new InsertOneModel<>(new Document("_id", 5)),new InsertOneModel<>(new Document("_id", 6)),             new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))),          new DeleteOneModel<>(new Document("_id", 2)),new ReplaceOneModel<>(new Document("_id", 3),          new Document("_id", 3).append("x", 4))));              // 不按照语句先后顺序执行             collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document("_id", 4)),          new InsertOneModel<>(new Document("_id", 5)), new InsertOneModel<>(new Document("_id", 6)),             new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))),          new DeleteOneModel<>(new Document("_id", 2)),new ReplaceOneModel<>(new Document("_id", 3),          new Document("_id", 3).append("x", 4))), new BulkWriteOptions().ordered(false));             // 关闭数据库连接             mongoClient.close();          }          public static void main(String[] args) {            MyMongo mymongo= new MyMongo();            mymongo.test();          }   }    
原创粉丝点击