zoukankan      html  css  js  c++  java
  • mongodb java操作常用写法

      MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。下面介绍的是用java操作MongoDB的一些常用写法。

      1.引用java操作MongoDB驱动包

     <dependency>
       <groupId>org.mongodb</groupId>
       <artifactId>mongo-java-driver</artifactId>
       <version>3.6.0</version>
     </dependency>

      2.java操作MongoDB一些常用写法

    public class MongoDBTest
    {
        //定义一个客户端
        private MongoClient   client   = null;
        
        //定义一个MongoDB数据库
        private MongoDatabase database = null;
        
        @Before
        public void init()
        {
            //连接MongoDB客户端
            client = new MongoClient("127.0.0.1", 27017);
            //使用数据库mongoDataBase
            database = client.getDatabase("mongoDataBase");
        }
        
        /**
         * 
         * @描述:向user集合中添加一条数据
         */
        @Test
        public void testInsertOne()
        {
            //获取user集合
            MongoCollection<Document> collection = database.getCollection("user");
            Document document = new Document();
            document.append("userName", "jack");
            document.append("age", 23);
            document.append("sex", "男");
            collection.insertOne(document);
        }
        
        /**
         * 
         * @描述:向user集合中添加多条数据
         */
        @Test
        public void testInsertMany()
        {
            //获取user集合
            MongoCollection<Document> userCollection = database.getCollection("user");
            //定义多个Document对象
            Document document1 = new Document("userName", "lily");
            document1.append("age", 24);
            document1.append("sex", "男");
            Document document2 = new Document("userName", "mary");
            document2.append("age", 30);
            document2.append("sex", "女");
            Document document3 = new Document("userName", "小吴");
            document3.append("age", 27);
            document3.append("sex", "男");
            userCollection.insertMany(Arrays.asList(document1, document2, document3));
        }
        
        /**
         * 
         * @描述:删除user集合中数据
         */
        @Test
        public void remove()
        {
            //获取user集合
            MongoCollection<Document> userCollection = database.getCollection("user");
            //执行删除的方法(删除age=23的所有人)
            //构造删除条件
            Bson delBson = Filters.eq("age", 23);
            //一次性删除所有符合条件的数据(删除age=23的所有人)
            userCollection.deleteMany(delBson);
        }
        
        /**
         * 
         * @描述:删除user集合中数据(带多个删除条件的)
         */
        @Test
        public void remove2()
        {
            //获取users集合
            MongoCollection<Document> userCollection = database.getCollection("user");
            //执行删除的方法(删除age>=20 并且 age<=30的所有人)
            //构造删除条件(age>=20)
            Bson delBson1 = Filters.gte("age", 20);
            //构造删除条件(age<=30)
            Bson delBson2 = Filters.lte("age", 30);
            //合并删除条件
            Bson delBson = Filters.and(delBson1, delBson2);
            userCollection.deleteMany(delBson);
        }
        
        /**
         * 
         * @描述:查询出user集合中所有数据
         */
        @Test
        public void testGetAll2()
        {
            //获取user集合
            MongoCollection<Document> userCollection = database.getCollection("user");
            //查询所有文档
            FindIterable<Document> allDocuments = userCollection.find();
            //获取迭代器
            MongoCursor<Document> iterator = allDocuments.iterator();
            while (iterator.hasNext())
            {
                Document document = iterator.next();
                System.out.println(document);
            }
        }
        
        /**
         * 
         * @描述:有条件查询user集合数据
         */
        @Test
        public void testGet()
        {
            //获取users集合
            MongoCollection<Document> userCollection = database.getCollection("user");
            //查询age>=25 并且age <=30的人
            Bson queryBson = Filters.and(Filters.gte("age", 25), Filters.lte("age", 30));
            FindIterable<Document> allDocuments = userCollection.find(Filters.and(queryBson));
            //获取迭代器
            MongoCursor<Document> iterator = allDocuments.iterator();
            while (iterator.hasNext())
            {
                Document document = iterator.next();
                System.out.println(document);
            }
        }
        
        /**
         * 
         * @描述:分页查询出users集合中的数据
         */
        @Test
        public void testGet2()
        {
            //获取users集合
            MongoCollection<Document> userCollection = database.getCollection("user");
            //查询前两个数据,skip(0):跳过0个,limit(2)查询2个
            FindIterable<Document> allDocuments = userCollection.find();
            FindIterable<Document> page = allDocuments.skip(0).limit(2);
            //获取迭代器
            MongoCursor<Document> iterator = page.iterator();
            while (iterator.hasNext())
            {
                Document document = iterator.next();
                System.out.println(document);
            }
        }
        
        /**
         * 
         * @描述:修改操作
         */
        @Test
        public void update()
        {
            //获取user集合
            MongoCollection<Document> userCollection = database.getCollection("user");
            ////修改 将userName为"lily" 的age改为25
            //db.users.update({"userName":"lily"},{$set:{"age":25}});
            //条件
            Bson eqBson = Filters.eq("userName", "lily");
            //要修改的内容
            Document updateBson = new Document("$set", new Document("age", 25));
            UpdateResult updateMany = userCollection.updateMany(eqBson, updateBson);
            System.out.println(updateMany.toString());
        }
        
        @After
        public void close()
        {
            client.close();
        }
        
    }

    注意:本文仅代表个人理解和看法哟!和本人所在公司和团体无任何关系!

  • 相关阅读:
    rapidjson 使用
    【设计模式】模板方法模式
    【设计模式】策略模式
    【设计模式】建造者模式
    【设计模式】享元模式
    /dev/sda1 contains a file system with errors,check forced.
    如何编写高效的Python的代码
    VsCode 调试 Python 代码
    Python 使用 pyinstaller 打包 代码
    初次使用git上传代码到github远程仓库
  • 原文地址:https://www.cnblogs.com/wy697495/p/9748374.html
Copyright © 2011-2022 走看看