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();
    }
    
}

 

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

posted @ 2018-10-06 20:38  freeTimeWY  阅读(2230)  评论(0编辑  收藏  举报