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

 

注意:本文僅代表個人理解和看法喲!和本人所在公司和團體無任何關系!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM