一、安裝
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