MongoDB的YUM安裝與卸載和javaApi

一、安裝

1、配置yum管理包

  1)、在路徑/etc/yum.repos.d/下創建文件mongodb-org-3.4.repo

  cd /etc/yum.repos.d/

  touch mongodb-org-3.4.repo

  2)、在文件mongodb-org-3.4.repo中寫入如下內容

  [mongodb-org-3.4]

  name=MongoDB Repository

  baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/

  gpgcheck=1

  enable=1

  gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

2、安裝mongodb(會安裝mongodb-org包及其依賴包mongodb-org-server、mongodb-org-mongos、mongodb-org-shell、mongodb-org-tools

  數據庫實例默認在/var/lib/mongo路徑下,日誌默認在/var/log/mongodb路徑下,也可以通過修改/etc/mongod.conf文件的storage.dbPath和systemLog.path配置

  yum install -y mongodb-org

3、修改配置文件

       vim /etc/mongod.conf      修改的新路徑需要賦值權限  chmod 777 -R 修改後的路徑(chown -R mongod:mongod /某某)

   設置ip地址與端口和數據保存目錄與日誌目錄

4、開啓mongodb服務

  service mongod start

5、通過查看日誌方式,驗證服務開啓成功,其中有一行爲:[thread1] waiting for connections on port 27017

  cat /var/log/mongodb/mongod.log

6、設置開機啓動

  chkconfig mongod on

7、停止mongodb服務

  service mongod stop

8、重啓mongodb服務

  service mongod restart

二、卸載

1、停止服務

  service mongod stop

2、刪除安裝的包

  yum erase $(rpm -qa | grep mongodb-org)

3、刪除數據及日誌

  rm -r /var/log/mongodb

  rm -r /var/lib/mongo

 

三、java Api

 pom.xml

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.4.2</version>
</dependency>

基礎操作代碼

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

import java.text.SimpleDateFormat;
import java.util.*;

import static com.mongodb.client.model.Filters.*;


public class MongoDbJdbc {
    /**
     * 獲取連接
     *
     * @param url
     * @param port
     * @return
     */
    public static MongoClient init(String url, int port) {
        MongoClient mongoClient = new MongoClient(url, port);
        return mongoClient;
    }

    /**
     * 獲取數據庫
     *
     * @param mongoClient 客戶端連接
     * @param dbName      數據庫名稱
     * @return
     */
    public static MongoDatabase getDatabase(MongoClient mongoClient, String dbName) {
        MongoDatabase database = mongoClient.getDatabase(dbName);
        return database;
    }

    /**
     * 獲取DB集合
     *
     * @param database       數據庫
     * @param collectionName 集合名稱
     * @return
     */
    public static MongoCollection<Document> getCollection(MongoDatabase database, String collectionName) {
        MongoCollection<Document> collection = database.getCollection(collectionName);
        return collection;
    }

    /**
     * 創建集合
     *
     * @param database
     * @param collectionName
     */
    public static void createCollection(MongoDatabase database, String collectionName) {
        try {
            database.createCollection(collectionName);
        } catch (Exception e) {
            System.out.println("集合已經存在");
        }
    }

    /**
     * 刪除集合
     */
    public static void delectCollection(MongoCollection<Document> collection) {
        collection.drop();
    }

    /**
     * 單條插入到集合
     *
     * @param data       數據
     * @param collection db庫集合
     */
    public static void insertLine(HashMap<String, Object> data, MongoCollection<Document> collection) {
        Document document = new Document();
        for (Map.Entry<String, Object> entry : document.entrySet()) {
            document.append(entry.getKey(), entry.getValue());
        }
        collection.insertOne(document);
    }

    /**
     * 批量插入到集合
     *
     * @param collection db庫集合
     * @param max        數據集
     */
    public static void insertBatch(MongoCollection<Document> collection, int max) {
        List<Document> documents = new ArrayList<>();
        for (int i = 0; i < max; i++) {
            Document document = new Document();
            document.append("_id", i);
            document.append("t", simpleDate.format(new Date()));
            document.append("v", Math.round(Math.random() * 100) / 10.0);
            documents.add(document);
        }
        collection.insertMany(documents);
    }

    /**
     * 根據索引id更新數據
     *
     * @param collection
     * @param id
     * @param data
     */
    public static void updateLine(MongoCollection<Document> collection, String id, Map<String, Object> data) {
        Document document = new Document();
        for (Map.Entry<String, Object> entry : document.entrySet()) {
            document.append(entry.getKey(), entry.getValue());
        }//主鍵查找
        collection.updateMany(eq("_id", id), new Document("$set", document));
    }

    /**
     * 批量更新
     *
     * @param collection 集合對象
     * @param sum        <id,map<key,value>>
     */
    public static void updateBatch(MongoCollection<Document> collection, int sum) {
        List<WriteModel<Document>> writeModelList = new ArrayList<>();
        for (int i = 0; i < sum; i++) {
            Document updateDocument = new Document();
            Document document = new Document();
            document.append("t", simpleDate.format(new Date()));
            document.append("v", Math.round(Math.random() * 100) / 10.0);
            updateDocument.append("$set", document);//更新
            UpdateOneModel<Document> updateOneModel = new UpdateOneModel<>(Filters.eq("_id", i), updateDocument);
            writeModelList.add(updateOneModel);
        }
        collection.bulkWrite(writeModelList, new BulkWriteOptions().ordered(true));
    }

    public static SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}

 

 

查詢與刪除集合數據的api,集合類似於mysql中的表

 

public static void main(String[] args) {
    //參數定義
    String utl = "192.168.60.61";                   //MongoDB的ip地址
    int port = 27017;                               //MongoDB的端口
    String databaseName = "db";                     //數據庫名稱
    String collectionName = "aqjk_rt_sensormonitor";//集合名稱

    //獲取資源對象
    MongoClient mongoClient = new MongoClient(utl, port);                       //獲取MongoDB客戶端連接
    MongoDatabase db = mongoClient.getDatabase(databaseName);                   //獲取數據庫
    MongoCollection<Document> collection = db.getCollection(collectionName);    //獲取集合
    //創建過濾器
    //刪除所有符合條件的數據,Filters的方法有,gt表示大於,lt表示小於 gte,lte表示大於等於,小於等於
    Bson filter = Filters.and(//and表示兩個都需要滿足
            Filters.gte("data_time", "2019-10-24 10:36:04"),//字段data_time大於2019-10-24 10:36:04
            Filters.lte("data_time", "2019-10-24 10:36:06")//字段值小於
    );
    //將過濾器作爲條件,查找符合條件的數據文檔
    FindIterable<Document> documents = collection.find(filter)
                .sort(new BasicDBObject("data_time", 1))//排序 -1表示倒序
                .limit(10);//查詢10條
    for (Document document : documents) {//遍歷集合
        System.out.println(document.toJson());//將當前文檔轉化爲json打印到控制檯
    }
    //刪除符合過濾器條件的數據
    collection.deleteMany(filter);
    mongoClient.close();//關閉MongoDB的連接,釋放資源
}

 

 

MongoDB創建索引

/**
 * 創建索引
 */
List<BasicDBObject> bsons = new ArrayList<BasicDBObject>();
bsons.add(new BasicDBObject().append("data_time", 1));//1升序,-1降序
for (BasicDBObject bson : bsons) {
    collection.createIndex(bson);
}

 

 

分組與聚合查詢

MongoCollection<Document> collection = db.getCollection(collectionName);

Bson match = Aggregates.match(
        Filters.and(
                Filters.gte("index", "100"),
                Filters.lte("index", "899"))
);
Bson group = Aggregates.group("$org_code", Accumulators.max("index", "$index"));
List<Bson> arrayList = new ArrayList();
//嚴格按照順序查詢
arrayList.add(match);//1.條件過濾
arrayList.add(group);//2.分組
AggregateIterable<Document> aggregate = collection.aggregate(arrayList);
for (Document document : aggregate) {
    System.out.println(document.toJson());
}
mongoClient.close();

分頁查詢

FindIterable<Document> documents = collection.find(filter).skip(0).limit(20);//指定位置爲0查詢長度爲20

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章