zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    

      

  • 相关阅读:
    ubuntu lvm模式进行扩容
    Kickstart Round G 2018
    AtCoder Regular Contest 102 D
    论文阅读 | Clustrophile 2: Guided Visual Clustering Analysis
    Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) E. Down or Right
    SQL语句报错:Incorrect string value: 'xE9x98xBFxE6x96xAF...'
    SQL语句报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near
    WAMP集成环境虚拟路径修改
    L2-025 分而治之(图)
    L2-024 部落(并查集)
  • 原文地址:https://www.cnblogs.com/afraidToForget/p/10058672.html
Copyright © 2011-2022 走看看