【Java使用mongodb-driver來操做mongodb】

Java使用mongodb-driver來操做mongodb

建立新工程

建立新的demo工程,引入MongoDB的jar包的座標:java

<dependencies>
        <!--mongo依賴-->
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver</artifactId>
            <version>3.6.3</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-core</artifactId>
            <version>3.6.3</version>
        </dependency>
    </dependencies>

編寫測試代碼(普通查詢)

在測試包com.cxf.test.MongoTest中,編寫以下的測試代碼,用於遍歷獲取全部的數據:mongodb

// 鏈接mongo服務器
        MongoClient mongoClient = new MongoClient("121.36.25.190",27017);

        // 獲取要操做的數據庫
        MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb");
        //獲得要操做的集合
        MongoCollection<Document> mongoCollection =  mongoDatabase.getCollection("spit");
        //獲得集合中的全部文檔
        FindIterable<Document> findIterable=  mongoCollection.find();
        //遍歷
        for (Document document:findIterable) {
            System.out.println("內容爲:"+document.getString("content"));
            System.out.println("用戶id爲:"+document.getString("userid"));
            System.out.println("訪問量 :" +document.getInteger("visits"));
        }
        mongoClient.close();

默認的數據類型的浮點型,對應了java 的Double類型.
若是是用NumberInt存儲的,那麼就用java的Integer類型來接收.
若是是用雙引號括起來的, 那麼就用String類型接收數據庫

每一列的數據類型要固定, 不能亂變。
在這裏插入圖片描述服務器

條件查詢

等於條件查詢

在測試類的main方法中,添加以下的代碼,即表明了只查詢userid爲1013的數據.
封裝了BasicDBObject 對象中, 把這個對象傳遞到find方法中,即表明了條件查詢測試

//封裝查詢的條件
        BasicDBObject basicDb = new BasicDBObject("userid", "1013");
        //獲得集合中的全部文檔
        FindIterable<Document> findIterable=  mongoCollection.find(basicDb);

完整的代碼:this

/** * @description: * @author:柴新峯 * @create:2020/9/7 */
public class MongoTest {
    public static void main(String[] args) {
        // 鏈接mongo服務器
        MongoClient mongoClient = new MongoClient("121.36.25.190",27017);
        // 獲取要操做的數據庫
        MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb");
        //獲得要操做的集合
        MongoCollection<Document> mongoCollection =  mongoDatabase.getCollection("spit");
        //封裝查詢的條件
        BasicDBObject basicDb = new BasicDBObject("userid", "1013");
        //獲得集合中的全部文檔
        FindIterable<Document> findIterable=  mongoCollection.find(basicDb);
        //遍歷
        for (Document document:findIterable) {
            System.out.println("內容爲:"+document.getString("content"));
            System.out.println("用戶id爲:"+document.getString("userid"));
            System.out.println("訪問量 :" +document.getInteger("visits"));
        }
        mongoClient.close();
    }
}

結果輸出:
在這裏插入圖片描述spa

大於條件查詢

查詢訪問量大於1000的數據
若是用命令來查詢大於1000的數據,那麼命令以下code

db.spit.find({visits:{$gt:1000}})

能夠看到是用兩個{}的,所以在代碼中,就對應了兩個BasicDBObject 對象
代碼以下
在BasicDBObject對象中嵌套一個BasicDBObject,嵌套的對象用於寫入大於的條件。
完整代碼以下:對象

package com.tensquare;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

/** * @description: * @author:柴新峯 * @create:2020/9/7 */
public class MongoTest {
    public static void main(String[] args) {
        // 鏈接mongo服務器
        MongoClient mongoClient = new MongoClient("121.36.25.190",27017);
        // 獲取要操做的數據庫
        MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb");
        //獲得要操做的集合
        MongoCollection<Document> mongoCollection =  mongoDatabase.getCollection("spit");
        //封裝查詢的條件
        BasicDBObject basicDb = new BasicDBObject("visits", new BasicDBObject("$gt",1000));
        //獲得集合中的全部文檔
        FindIterable<Document> findIterable=  mongoCollection.find(basicDb);
        //遍歷
        for (Document document:findIterable) {
            System.out.println("內容爲:"+document.getString("content"));
            System.out.println("用戶id爲:"+document.getString("userid"));
            System.out.println("訪問量 :" +document.getInteger("visits"));
            System.out.println("****************************************************");
        }
        mongoClient.close();
    }
}

結果輸出:
在這裏插入圖片描述圖片

添加數據到mongo中

經過查看Document的源碼,發現其構造方法能夠傳入一個map,所以經過 map來封裝插入的數據.
源碼以下:

public Document() {
        this.documentAsMap = new LinkedHashMap();
    }

    public Document(String key, Object value) {
        this.documentAsMap = new LinkedHashMap();
        this.documentAsMap.put(key, value);
    }

    public Document(Map<String, Object> map) {
        this.documentAsMap = new LinkedHashMap(map);
    }

完整代碼以下:

package com.tensquare;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import java.util.HashMap;
import java.util.Map;

/** * @description: * @author:柴新峯 * @create:2020/9/7 */
public class MongoTest {
    public static void main(String[] args) {
        // 鏈接mongo服務器
        MongoClient mongoClient = new MongoClient("121.36.25.190", 27017);

        // 獲取要操做的數據庫
        MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb");
        //獲得要操做的集合
        MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit");
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("_id", "9");
        map.put("content", "測試mongo的添加");
        map.put("userid", "1");
        map.put("visits", "5000");
        Document documentMap = new Document(map);
        //spit爲操做的集合,至關於操做的表
        mongoCollection.insertOne(documentMap);
        //獲得集合中的全部文檔
        FindIterable<Document> findIterable = mongoCollection.find();
        //遍歷
        for (Document document : findIterable) {
            System.out.println("內容爲:" + document.getString("content"));
            System.out.println("用戶id爲:" + document.getString("userid"));
            System.out.println("訪問量 :" + document.getInteger("visits"));
            System.out.println("****************************************************");
        }
        mongoClient.close();
    }
}

結果以下:
在這裏插入圖片描述

相關文章
相關標籤/搜索