『壹』 怎麼樣使用MongoDB的java驅動操作代碼
使用spring注入mongoTemplate,調用相應的方法
@Resource
private MongoTemplate mongoTemplate;
『貳』 Mongodb的java driver中的Mongo和MongoClient有什麼區別
「MongoClient加入到Java驅動程序在2.10作為MongoDB的默認連接類
其實並沒有什麼區別
不過有時候Mongo 運行得比 MongoClient要快
你可以試一下這個代碼,放入1m的文檔。Mongo大概用20秒左右,MongoClient要用180秒左右。
<?php
function mongo_connect($db, $collection) {
$mongo = new Mongo( 'mongodb://localhost' );
return $mongo->$db->$collection;
}
$mongodb='notificator1';
$mongocollection='tok';
$collection= mongo_connect($mongodb, $mongocollection);
echo $time = microtime(true). "\n";
$i=0;
while ( $i < 1000000 ) {
$row = Array('title' => "test #$i");
$collection->save($row);
++$i;
}
echo microtime(true) - $time;
?>
替換 mongo_connect:
function mongo_connect($db, $collection) {
$m = new MongoClient('mongodb://localhost:27017');
$db = $m->selectDB($db);
return $collection = new MongoCollection($db, $collection);
}
『叄』 MongoDB java Driver 3.x 要怎麼用.求解
第一步:安裝MongoDB無需太多的繁雜步驟,你只要在MongoDB官方網站查看安裝說明,根據自己的操作系統進行選擇適應的版本即可。第二步:啟動MongoDB伺服器這一步也很簡單。運行mongod.exe文件里的bin文件夾(我使用的是Windows OS系統),並啟動MongoDB伺服器。在默認的情況下伺服器將啟動埠27017,你需要在安裝過程中創建將數據存儲在/data/db目錄里。第三步:啟動MongoDB shell指令你可以通過運行mongo.exe文件來啟動MongoBD shell。第四步:利用MongoDB創建資料庫利用MongoDB在MongoDB shell中輸入以下內容建立一個名為「company」的資料庫。use company 記住,除非你在MangoDB里保存了一些東西,否則它不會自動為你保存。使用下面的命令幫你查看可用的資料庫,它會顯示「company」尚未被創建。show dbs; 第五步:在MongoDB中保存數據使用下面的命令來保存employee 數據代表一個collection,將其命名為employees。employee = {name : "A", no : 1} db.employees.save(employee) 通過使用下面的命令來查看collection里的數據。db.users.find(); 如何使用Java操作MongoDB?下面是是一段簡單的Java代碼,你可以在這里獲得mongo-java驅動。很簡單,只需要使用下面的代碼,重復上面的操作即可。package com.eviac.blog.mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MongoDBClient { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("company"); DBCollection collection = db.getCollection("employees"); BasicDBObject employee = new BasicDBObject(); employee.put("name", "Hannah"); employee.put("no", 2); collection.insert(employee); BasicDBObject searchEmployee = new BasicDBObject(); searchEmployee.put("no", 2); DBCursor cursor = collection.find(searchEmployee); while (cursor.hasNext()) { System.out.println(cursor.next()); } System.out.println("The Search Query has Executed!"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } } 結果如下:{ "_id" : { "$oid" : "4fec74dc907cbe9445fd2d70"} , "name" : "Hannah" , "no" : 2} The Search Query has Executed! 小結:隨著互聯網Web2.0網站的興起,非關系型的資料庫現在成了一個極其熱門的新領域,非關系資料庫產品的發展也非常迅速。本文淺顯的談及了如何使用Java操作MongoDB以及了解MongoDB如何進行日常的資料庫操作的問題。如果您是這方面的專家不妨與我們分享下。
『肆』 如何在java中使用mongodb
首先你需要安裝mongodb的JDBC驅動,比如mongo-java-driver-3.2.2.jar。然後把這個jar包引用到你的程序中。
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC{
public static void main( String args[] ){
try{
// 連接到 mongodb 服務
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// 連接到資料庫
MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
System.out.println("Connect to database successfully");
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
『伍』 如何用Java操作MongoDB
HelloWorld程序
學習任何程序的第一步,都是編寫HelloWorld程序,我們也不例外,看下如何通過Java編寫一個HelloWorld的程序。
首先,要通過Java操作Mongodb,必須先下載Mongodb的Java驅動程序,可以在這里下載。
新建立一個Java工程,將下載的驅動程序放在庫文件路徑下,程序代碼如下:
packagecom.mkyong.core;
importjava.net.UnknownHostException;
importcom.mongodb.BasicDBObject;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.DBCursor;
importcom.mongodb.Mongo;
importcom.mongodb.MongoException;
/**
*Java+MongoDBHelloworldExample
*
*/
publicclassApp{
publicstaticvoidmain(String[]args){
try{
//實例化Mongo對象,連接27017埠
Mongomongo=newMongo("localhost",27017);
//連接名為yourdb的資料庫,假如資料庫不存在的話,mongodb會自動建立
DBdb=mongo.getDB("yourdb");
//GetcollectionfromMongoDB,databasenamed"yourDB"
//從Mongodb中獲得名為yourColleection的數據集合,如果該數據集合不存在,Mongodb會為其新建立
DBCollectioncollection=db.getCollection("yourCollection");
//使用BasicDBObject對象創建一個mongodb的document,並給予賦值。
BasicDBObjectdocument=newBasicDBObject();
document.put("id",1001);
document.put("msg","helloworldmongoDBinJava");
//將新建立的document保存到collection中去
collection.insert(document);
//創建要查詢的document
BasicDBObjectsearchQuery=newBasicDBObject();
searchQuery.put("id",1001);
//使用collection的find方法查找document
DBCursorcursor=collection.find(searchQuery);
//循環輸出結果
while(cursor.hasNext()){
System.out.println(cursor.next());
}
System.out.println("Done");
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(MongoExceptione){
e.printStackTrace();
}
}
}
最後,輸出的結果為:
{"_id":{"$oid":"4dbe5596dceace565d229dc3"},
"id":1001,"msg":"helloworldmongoDBinJava"}
Done
在上面的例子中,演示了使用Java對Mongodb操作的重要方法和步驟,首先通過創建Mongodb對象,傳入構造函數的參數是Mongodb的資料庫所在地址和埠,然後使用
getDB方法獲得要連接的資料庫名,使用getCollection獲得數據集合的名,然後通過新建立BasicDBObject對象去建立document,最後通過collection的insert方法,將建立的document保存到資料庫中去。而collection的find方法,則是用來在資料庫中查找document。
從Mongodb中獲得collection數據集
在Mongodb中,可以通過如下方法獲得資料庫中的collection:
DBCollectioncollection=db.getCollection("yourCollection");
如果你不知道collection的名稱,可以使用db.getCollectionNames()獲得集合,然後再遍歷,如下:
DBdb=mongo.getDB("yourdb");
Setcollections=db.getCollectionNames();
for(StringcollectionName:collections){
System.out.println(collectionName);
}
完成的一個例子如下:
packagecom.mkyong.core;
importjava.net.UnknownHostException;
importjava.util.Set;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.Mongo;
importcom.mongodb.MongoException;
/**
*Java:GetcollectionfromMongoDB
*
*/
publicclassGetCollectionApp{
publicstaticvoidmain(String[]args){
try{
Mongomongo=newMongo("localhost",27017);
DBdb=mongo.getDB("yourdb");
Set<String>collections=db.getCollectionNames();
for(StringcollectionName:collections){
System.out.println(collectionName);
}
DBCollectioncollection=db.getCollection("yourCollection");
System.out.println(collection.toString());
System.out.println("Done");
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(MongoExceptione){
e.printStackTrace();
}
}
}
Mongodb中如何插入數據
下面,講解下如何使用4種方式,將JSON數據插入到Mongodb中去。首先我們准備JSON
格式的數據,如下:
{
"database":"mkyongDB",
"table":"hosting",
"detail":
{
records:99,
index:"vps_index1",
active:"true"
}
}
}
我們希望用不同的方式,通過JAVA代碼向Mongodb插入以上格式的JSON數據
第一種方法,是使用BasicDBObject,方法如下代碼所示:
BasicDBObjectdocument=newBasicDBObject();
document.put("database","mkyongDB");
document.put("table","hosting");
BasicDBObjectdocumentDetail=newBasicDBObject();
documentDetail.put("records","99");
documentDetail.put("index","vps_index1");
documentDetail.put("active","true");
document.put("detail",documentDetail);
collection.insert(document);
第二種方法是使用BasicDBObjectBuilder對象,如下代碼所示:
=BasicDBObjectBuilder.start()
.add("database","mkyongDB")
.add("table","hosting");
Detail=BasicDBObjectBuilder.start()
.add("records","99")
.add("index","vps_index1")
.add("active","true");
documentBuilder.add("detail",documentBuilderDetail.get());
collection.insert(documentBuilder.get());
第三種方法是使用Map對象,代碼如下:
MapdocumentMap=newHashMap();
documentMap.put("database","mkyongDB");
documentMap.put("table","hosting");
MapdocumentMapDetail=newHashMap();
documentMapDetail.put("records","99");
documentMapDetail.put("index","vps_index1");
documentMapDetail.put("active","true");
documentMap.put("detail",documentMapDetail);
collection.insert(newBasicDBObject(documentMap));
第四種方法,也就是最簡單的,即直接插入JSON格式數據
String json="{'database' : 'mkyongDB','table' : 'hosting',"+
"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
DBObject dbObject=(DBObject)JSON.parse(json);
collection.insert(dbObject);
這里使用了JSON的parse方法,將解析後的JSON字元串轉變為DBObject對象後再直接插入到collection中去。
完整的代碼如下所示:
packagecom.mkyong.core;
importjava.net.UnknownHostException;
importjava.util.HashMap;
importjava.util.Map;
importcom.mongodb.BasicDBObject;
importcom.mongodb.BasicDBObjectBuilder;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.DBCursor;
importcom.mongodb.DBObject;
importcom.mongodb.Mongo;
importcom.mongodb.MongoException;
importcom.mongodb.util.JSON;
/**
* Java MongoDB : Insert a Document
*
*/
publicclass InsertDocumentApp {
publicstaticvoid main(String[] args){
try{
Mongo mongo=newMongo("localhost",27017);
DB db=mongo.getDB("yourdb");
//get a single collection
DBCollection collection=db.getCollection("mmyColl");
//BasicDBObject example
System.out.println("BasicDBObject example...");
BasicDBObject document=newBasicDBObject();
document.put("database","mkyongDB");
document.put("table","hosting");
BasicDBObject documentDetail=newBasicDBObject();
documentDetail.put("records","99");
documentDetail.put("index","vps_index1");
documentDetail.put("active","true");
document.put("detail", documentDetail);
collection.insert(document);
DBCursor cursorDoc=collection.find();
while(cursorDoc.hasNext()){
System.out.println(cursorDoc.next());
}
collection.remove(newBasicDBObject());
//BasicDBObjectBuilder example
System.out.println("BasicDBObjectBuilder example...");
BasicDBObjectBuilder documentBuilder=BasicDBObjectBuilder.start()
.add("database","mkyongDB")
.add("table","hosting");
BasicDBObjectBuilder documentBuilderDetail=BasicDBObjectBuilder.start()
.add("records","99")
.add("index","vps_index1")
.add("active","true");
documentBuilder.add("detail", documentBuilderDetail.get());
collection.insert(documentBuilder.get());
DBCursor cursorDocBuilder=collection.find();
while(cursorDocBuilder.hasNext()){
System.out.println(cursorDocBuilder.next());
}
collection.remove(newBasicDBObject());
//Map example
System.out.println("Map example...");
Map documentMap=newHashMap();
documentMap.put("database","mkyongDB");
documentMap.put("table","hosting");
Map documentMapDetail=newHashMap();
documentMapDetail.put("records","99");
documentMapDetail.put("index","vps_index1");
documentMapDetail.put("active","true");
documentMap.put("detail", documentMapDetail);
collection.insert(newBasicDBObject(documentMap));
DBCursor cursorDocMap=collection.find();
while(cursorDocMap.hasNext()){
System.out.println(cursorDocMap.next());
}
collection.remove(newBasicDBObject());
//JSON parse example
System.out.println("JSON parse example...");
String json="{'database' : 'mkyongDB','table' : 'hosting',"+
"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
DBObject dbObject=(DBObject)JSON.parse(json);
collection.insert(dbObject);
DBCursor cursorDocJSON=collection.find();
while(cursorDocJSON.hasNext()){
System.out.println(cursorDocJSON.next());
}
collection.remove(newBasicDBObject());
}catch(UnknownHostException e){
e.printStackTrace();
}catch(MongoException e){
e.printStackTrace();
}
}
}
『陸』 mongodb的java驅動如何在distinct後count,只獲得結果的大小
不distinct是可以的:mongoTemplate.getCollection("goods").getStats().get("size");
distinct後沒發現呢,貌似不行吧。
『柒』 Mongodb的java driver中的Mongo和MongoClient有什麼區別
「MongoClient加入到Java驅動程序在2.10作為MongoDB的默認連接類其實並沒有什麼區別不過有時候Mongo運行得比MongoClient要快你可以試一下這個代碼,放入1m的文檔。Mongo大概用20秒左右,MongoClient要用180秒左右。替換mongo_connect:fun
『捌』 mongodb的java驅動怎麼安裝,已經安裝了mongodb,下載了java驅動,不知道下一步怎麼做,
安裝:mongod --dbpath "E:\tool\db\mongo\dbfile" --logpath "E:\tool\db\mongo\dbfile\logs.txt" --install --serviceName "MongoDB"
卸載:mongod --remove --serviceName "MongoDB"
『玖』 如何配置MongoDB的Java驅動程序MongoOptions在生產中使用
Java代碼 收藏代碼
// 構造方法
// replicaSetSeeds 所有 Server 的地址
// options 默認的查詢設置
public Mongo( List<ServerAddress> replicaSetSeeds , MongoOptions options )
throws MongoException {
// 設置類變數
_addr = null;
_addrs = replicaSetSeeds;
_options = options;
// 應用查詢設置
_applyMongoOptions();
// 創建 TCP 連接實例
_connector = new DBTCPConnector( this , _addrs );
// 啟動數據清理線程
_cleaner = new DBCleanerThread();
_cleaner.start();
}
// 應用查詢設置
void _applyMongoOptions() {
// 是否在 Slave Server 上執行查詢
if (_options.slaveOk) slaveOk();
// 應用默認的寫入設置
setWriteConcern( _options.getWriteConcern() );
}
// 應用默認的寫入設置
public void setWriteConcern( WriteConcern concern ){
_concern = concern;
}
涉及的其他類:
ServerAddress 用於保存主機名和所使用的埠的信息
MongoOptions 用於保存查詢設置(是否在 Slave 上進行查詢,超時設置等)
WriteConcern 寫入參數設置,包括:Server 數量,寫入超時設置,是否立即將結果同步到文件系統中
DBTCPConnector 表示 TCP 數據連接,後續文章中將詳細介紹。
DBCleanerThread 清理線程,每隔一段時間清理各個DB 的 DBCursor
獲取所有資料庫的名稱
實現如下:
Java代碼 收藏代碼
// 獲取所有資料庫的名稱
public List<String> getDatabaseNames()
throws MongoException {
// 創建表示資料庫命令的 DBOBject
BasicDBObject cmd = new BasicDBObject();
cmd.put("listDatabases", 1);
// 使用 admin 資料庫執行命令並返回結果
CommandResult res = getDB( "admin" ).command(cmd, getOptions());
// 有錯誤的情況下拋出異常
res.throwOnError();
// 獲取結果中的 databases 屬性,即資料庫列表
List l = (List)res.get("databases");
// 遍歷 databases,將名稱保存到一個 list 中,並返回結果
List<String> list = new ArrayList<String>();
for (Object o : l) {
list.add(((BasicDBObject)o).getString("name"));
}
return list;
}
涉及的其他類:
BasicDBObject 與 MongoDB 交互時使用的數據結構,實際相當於 Java 中的 Map,或 JavaScript 中的 object
CommandResult 操作執行的結果,繼承 BasicDBObject,提供一些便捷的方法,實際仍然是在 DBObject 中查詢相應的屬性。