MongoDriver

jar包依赖和 官方文档    https://docs.mongodb.com/manual/reference/program/mongo/  

The MongoClient instance represents a pool of connections to the database; you will only need one instance of class MongoClient even with multiple threads.

一个MongoClient实例是一个连接池,程序中只需要使用一个就够了。

JavaDriver:

import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class TestDB {

    public static  void  main(String [] args)
    {
//        MongoClient client = MongoClients.create();
//        MongoClient client = MongoClients.create(MongoClientSettings.builder().applyToClusterSettings(
//                builder->builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017)))
//        ).build());
        MongoClient client = MongoClients.create("mongodb://localhost:27017");

        MongoDatabase testDB = client.getDatabase("test");
        MongoCollection<Document> userCollection = testDB.getCollection("userTable");
        // 表不需要主动创建
        userCollection.drop();

        Document oneUser = new Document("name", " WangMing")
                .append("age", 22)
                .append("info", new Document("tel", "123456789").append("email", "11@qq.com"));
        // 插入一条数据
        userCollection.insertOne(oneUser);

        List<Document> documents = new ArrayList<Document>();
        for (int i =0; i<3; i++)
        {
            // 一组包含相同键值的数据
            documents.add(new Document("key_i", i));
        }
        MongoCollection<Document> demoCollection = testDB.getCollection("demoTable");
        demoCollection.drop();
        // 按顺序插入多条数据
        demoCollection.insertMany(documents);

        System.out.println(demoCollection.countDocuments());

        // .find().first() 无记录的情况下,first返回值为空,find返回值不为空,不必担心空指针
        Document firstDoc = userCollection.find().first();
        //   toString 方法返回的不是json串
        System.out.println(firstDoc.toJson());
        System.out.println(" toString 方法返回的不是json串 ");
        System.out.println(firstDoc.toString());

        System.out.println("查询数据并遍历 ");
        MongoCursor<Document> cursor = demoCollection.find().iterator();
        while(cursor.hasNext()){
            System.out.println(cursor.next().toJson());
        }
        cursor.close();

        for (Document cur: demoCollection.find()){
            System.out.println(cur.toJson());
        }

        System.out.println(" the value type of key_i is int ");
        Document second = demoCollection.find(Filters.eq("key_i", 2)).first();
        System.out.println(second.toJson());
        System.out.println("//把int 2  更新为string 2 ");
        // Use Update Operators such as $set, $unset, or $rename.
        demoCollection.updateOne(Filters.eq("key_i", 2), new Document("$set", new Document("key_i", "2") ) );
        Document updated = demoCollection.find(Filters.eq("key_i", "2")).first();
        System.out.println(" 更新后 数值是String 类型 ");
        System.out.println(updated.toJson());
        System.out.println("// second 变量是旧数据");
        System.out.println(second.toJson());


        UpdateResult updateResult = demoCollection.updateMany(Filters.eq("key_i", 1),
                new Document().append("$set", new Document().append("key_i", "1")));
        System.out.println(updateResult.getModifiedCount());

        Consumer<Document> consumer = new Consumer<Document>() {
            @Override
            public void accept(Document document) {
                System.out.println(document.toJson());
            }
        };
        System.out.println("next print string values");
        demoCollection.find(Filters.gt("i", 0)).forEach(consumer);
    }
}

  

原文地址:https://www.cnblogs.com/afraidToForget/p/10058672.html