1. 程式人生 > >mongoDB的安裝使用,以及java操作

mongoDB的安裝使用,以及java操作

mongo作為nosql的一種,使用範圍還是很廣泛的,應用場景也很多,

 

● 網站資料:Mongo 非常適合實時的插入,更新與查詢,並具備網站實時資料儲存所需的複製及高度伸縮性。
● 快取:由於效能很高,Mongo 也適合作為資訊基礎設施的快取層。在系統重啟之後,由Mongo 搭建的持久化快取層可以避免下層的資料來源過載。
● 大尺寸、低價值的資料:使用傳統的關係型資料庫儲存一些資料時可能會比較昂貴,在此之前,很多時候程式設計師往往會選擇傳統的檔案進行儲存。
● 高伸縮性的場景:Mongo 非常適合由數十或數百臺伺服器組成的資料庫,Mongo 的路線圖中已經包含對MapReduce 引擎的內建支援。
● 用於物件及JSON 資料的儲存:Mongo 的BSON 資料格式非常適合文件化格式的儲存及查詢。
 

 

不適合使用mongoDB的場景:

● 高度事務性的系統:例如,銀行或會計系統。傳統的關係型資料庫目前還是更適用於需要大量原子性複雜事務的應用程式。
● 傳統的商業智慧應用:針對特定問題的BI 資料庫會產生高度優化的查詢方式。對於此類應用,資料倉庫可能是更合適的選擇。
● 需要SQL 的問題。

 

很簡單的java操作

首先是安裝mongoDB,從https://www.mongodb.com/download-center 下載了,一直下一步的安裝,我是安裝到了c盤,在c盤再建立C:\data\db  這兩層資料夾就可以去cmd中啟動mongo了,當然了要把安裝的bin,就是這個 C:\Program Files\MongoDB\Server\3.6\bin目錄配置到path路徑中.

只需要在一個黑視窗 資料命令  mongod   就能夠啟動mongodb了,最後會輸出預設埠號是:27017

 

 

再重新開啟一個cmd視窗,輸入命令  mongo   就能進入mongo的shell命令控制檯了,就可以進行操作了.這個還是非常簡單的.

就是這樣的,我們就完成了mongodb的安裝,後面需要什麼設定,再進行配置

 

下面就說說java最其的使用:

1.新增依賴:

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

 

2.寫幾個測試方法:

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

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author zk
 * @Description: mongoDB的java基本操作
 * @date 2018-11-09 14:15
 */
public class MongoTest1 {

    public static void main(String[] args) {
        // 連線到 mongodb 服務
        MongoClient client = new MongoClient("localhost", 27017);
        //連線到資料庫
        MongoDatabase database = client.getDatabase("col");
        System.out.println(database);
        System.out.println("success  connect to mongo");

    }

    public static void createCollection(MongoDatabase db){
        db.createCollection("java");
    }

    public static void getCollection(MongoDatabase db){
        MongoCollection<Document> collection = db.getCollection("java");
        FindIterable<Document> documents = collection.find();
        System.out.println("documents"+documents);
        System.out.println("collection"+collection);
    }

    /**
     * 插入文件
     * 1. 建立文件 org.bson.Document 引數為key-value的格式
     * 2. 建立文件集合List<Document>
     * 3. 將文件集合插入資料庫集合中 mongoCollection.insertMany(List<Document>) 插入單個文件可以用 mongoCollection.insertOne(Document)
     * */
    public static void insert(MongoDatabase db){
        MongoCollection<Document> collection = db.getCollection("java");
        Document document = new Document("title", "mysql");
        document.append("name","zhaojun");
        document.append("age",12);
        List<Document> collect = Stream.of(document).collect(Collectors.toList());
        collection.insertMany(collect);
        System.out.println("插入成功");
    }


    /**
     * 檢索所有文件
     * 1. 獲取迭代器FindIterable<Document>
     * 2. 獲取遊標MongoCursor<Document>
     * 3. 通過遊標遍歷檢索出的文件集合
     * */
    public static void queryAll(MongoDatabase db){
        MongoCollection<Document> collection = db.getCollection("java");
        FindIterable<Document> documents = collection.find();
        for (Document document : documents) {
            System.out.println(document);
        }
    }


    public static void updateDoc(MongoDatabase db){
        MongoCollection<Document> collection = db.getCollection("java");
        //更新文件   將文件中likes=100的文件修改為likes=200
        collection.updateMany(Filters.eq("age",12),new Document("$set",new Document("age",500)));

        FindIterable<Document> documents = collection.find();
        for (Document document : documents) {
            System.out.println(document);
        }
    }


    public static void delete(MongoDatabase db){
        MongoCollection<Document> collection = db.getCollection("java");
        //刪除符合條件的第一個文件
        collection.deleteOne(Filters.eq("age",500));
        //刪除所有符合條件的文件
        collection.deleteMany(Filters.eq("likes",100));
        //檢索檢視結果
        for (Document doc : collection.find()) {
            System.out.println(doc);
        }
    }



}

 

就是這麼的簡單,是吧.

這種文件型資料庫的優勢就是一些非結構化的資料的儲存,處理非常的方便,我們有個需求開始很簡單,最後多次更改後,發現用mysql實現起來很麻煩,也很複雜了,因為一些資料再放在mysql就不是那麼的好了,就開始考慮使用monoDB了.

好了,今天就先寫到這裡了.

: