1. mongo-java-driver,java怎麼查詢MongoDB,並做時間分組統計
java操作mongodb進行查詢,常用篩選條件的設置如下:
條件列表:
BasicDBListcondList=newBasicDBList();
臨時條件對象:
BasicDBObjectcond=null;
DBCollectioncoll=db.getCollection("A");
1、$where
在某種應用場合,若要集合A查詢文檔且要滿足文檔中某些屬性運算結果,可以編寫一腳本函數用where進行設置,比如:
某集合中存放的用戶信息,包括姓名、年齡、手機號、地址等,要篩選出年齡大於20且小於等於40的用戶,我們可以這樣:
StringageStr="function(){returnparseFloat(this.age)>20&&parseFloat(this.age)<=40};"洞廳;
cond=納信隱newBasicDBObject();
cond.put("$where",ageStr);
放入條件列表
condList.add(cond);
2、$in
接1實例中,要查詢年齡為23、40、50的用戶信息,我們可以這樣:
創建一個臨時的條件列表對象,將條件值分別添加進去
BasicDBListvalues=newBasicDBList();
values.add(23);
values.add(40);
values.add(50);
cond=newBasicDBObject();
cond.put("age",newBasicDBObject("$in",values));
放入條件列表
condList.add(cond);
3、模糊匹配
接1實例中,要按照用戶的姓名進行模糊查詢,如:王,我們可以這樣做:
使用不區分大小寫的模糊查詢
3.1完全匹配
Patternpattern=Pattern.compile("^王$",Pattern.CASE_INSENSITIVE);
3.2右匹配
Patternpattern=Pattern.compile("^.*王$",Pattern.CASE_INSENSITIVE);
3.3左匹配
Patternpattern=Pattern.compile("^王.*$",Pattern.CASE_INSENSITIVE);
3.4模糊匹配
Patternpattern=Pattern.compile("^.*王.*$",Pattern.CASE_INSENSITIVE);
cond=newBasicDBObject();
cond.put("name",cond);
放入條件列表
condList.add(cond);
4、$gte/$lte/$gt/$lt
接1實例中,要篩選出年齡大於20且小於等於40的用戶,我們可以這樣:
cond=newBasicDBObject();
cond.append("age",newBasicDBObject("$gt",20));
cond.append("age",newBasicDBObject("$lte",40));
放入條件列表
condList.add(cond);
在日常的查詢中篩選的條件可能會有多個,而且多個條件之間都是且的關系,結合上例1、2、3、4中
將每種條件添加到條件列坦念表中,我可以這樣:
BasicDBObjectsearchCond=newBasicDBObject();
searchCond.put("$and",condList);
然後查詢數據:
DBCursorret=coll.find(searchCond);
2. 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"
3. 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如何進行日常的資料庫操作的問題。如果您是這方面的專家不妨與我們分享下。
4. java鏈接mongo資料庫需要引什麼jar包
需要的jar
mongo-java-driver
maven倉庫裡面,mongodb3.0的連接驅動
<!--MongoDB資料庫連接驅動-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.0.0</version>
</dependency>
2.連接過程代碼
importorg.bson.Document;
importcom.mongodb.MongoClient;
importcom.mongodb.client.MongoCollection;
importcom.mongodb.client.MongoDatabase;
/**
*2016年8月5日下午3:19:44
*
*@author3306TODO測試Mongo資料庫連接
*
*/
publicclassTestMongo{
;
privatestaticStringhost="192.168.0.149";//mongo資料庫伺服器地址,本地為127.0.0.1
privatestaticintport=20000;//mongo默認為27017埠
/**
*獲取資料庫集合
*
*@paramdatabaseName
*資料庫名稱
*@paramcollectionName
*集合名稱
*@returnMongoCollection<Document>
*/
publicstaticMongoCollection<Document>getMongoCollection(StringdatabaseName,StringcollectionName){
returngetMongoDatabase(databaseName).getCollection(collectionName);
}
/**
*獲取mongo資料庫
*
*@paramdatabaseName
*資料庫名稱
*@returnMongoDatabase
*/
(StringdatabaseName){
mongoClient=newMongoClient(host,port);
returnmongoClient.getDatabase(databaseName);
}
/**
*測試數據連接
*
*@paramargs
*/
publicstaticvoidmain(String[]args){
StringdatabaseName="mojing";//資料庫
StringcollectionName="user";//集合名稱
MongoCollection<Document>userCollection=getMongoCollection(databaseName,collectionName);
System.out.println(userCollection.count());
}
}
5. 如何配置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 中查詢相應的屬性。
6. 有沒有大神 java連接mongodb遇到了問題
新版本的戚知皮mongodb的驅動包是依賴bson.jar和mongodb_driver_core.jar的 官網上有提示:
Note: mongodb-driver requires the following dependencies: bson and mongodb-driver-core
去看高差一下 ,然後對應的地方有兩個包的下載,猛納導進你的方法就ok了
下載地址:
MongoDB-driver-3.0.1.jar
mongodb-driver-core-3.0.1.jar
bson-3.0.1.jar
https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver/3.0.1/
https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver-core/3.0.1/
https://oss.sonatype.org/content/repositories/releases/org/mongodb/bson/3.0.1/
7. mongodb的java驅動如何在distinct後count,只獲得結果的大小
不distinct是可以的:mongoTemplate.getCollection("goods").getStats().get("size");
distinct後沒發現呢,貌似不行吧。
8. 淺談如何用Java操作MongoDB
本文主要講述如何使用Java操作MongoDB以及了解MongoDB如何進行日常的資料庫操作。 文章內容如下: 第一步:安 NoSQL資料庫因其可擴展性使其變得越來越流行,利用NoSQL資料庫可以給你帶來更多的好處,MongoDB是一個用C++編寫的可度可擴展性的開源NoSQL資料庫。本文主要講述如何使用Java操作MongoDB以及了解MongoDB如何進行日常的資料庫操作。 文章內容如下: 第一步:安裝MongoDB 無需太多的繁雜步驟,你只要在MongoDB官方網站查看安裝說明,根據自己的操作系統進行選擇適應的版本即可。 第二步:啟動MongoDB伺服器耐帆 這一步也很簡單。運行mongod.exe文件里的bin文件夾(我使用的是Windows OS系統),並啟動MongoDB伺服器。 在默認的情況下伺服器將啟動埠27017,你需要在安裝過程中創建將數據存儲在/data/db目錄里。 第三步:啟動MongoDB shell指令 你可以通過運行mongo.exe文件來啟動MongoBD shell。 第四步:利用MongoDB創建資料庫 利用MongoDB在MongoDB shell中輸入以下內容建立一個名為「company」的資料庫。 雙擊代碼全選 1<ol class="dp-xml"style="margin:0px 0px 1em 20px;padding:5px 0px;list-style-position:initial;list-style-image:initial;border-style:none none none solid;border-left-width:3px;border-left-color:#146b00;color:#5c5c5c;font-size:14px;"><li><漏畝罩p>use company </p></li></ol> 記住,除非你在MangoDB里保存了一些東西,否則它不會自動為你保存。 使用下面的命令幫你查看可用的資料庫,它會顯示「company」尚未被創建。 雙擊代碼全選 1<ol class="dp-xml"style="margin:0px 0px 1em 20px;padding:5px 0px;list-style-position:initial;list-style-image:initial;border-style:none none none solid;border-left-width:3px;border-left-color:#146b00;color:#5c5c5c;font-size:14px;"><li><p>show dbs; </p></li></ol> 第五步:在MongoDB中保存數據 使用下面的命令來保存employee 數據代表一個collection,將其命名為employees。 雙擊代碼全選 1<ol class="dp-xml"style="margin:0px 0px 1em 20px;padding:5px 0px;list-style-position:initial;list-style-image:initial;border-style:none none none solid;border-left-width:3px;border-left-color:#146b00;color:#5c5c5c;font-size:14px;"><li><p>employee = {name : "A", no : 1} </p></li><li><p>db.employees.save(employee) </p></li></ol> 通過使用下面的命令來查看collection里的數據。 雙擊代碼全選 1<ol class="dp-xml"style="margin:0px 0px 1em 20px;padding:5px 0px;list-style-position:initial;list-style-image:initial;border-style:none none none solid;border-left-width:3px;border-left-color:#146b00;color:#5c5c5c;font-size:14px;"><li><p>db.users.find(); </p><返鬧/li></ol> 如何使用Java操作MongoDB? 下面是是一段簡單的Java代碼,你可以在這里獲得mongo-java驅動。很簡單,只需要使用下面的代碼,重復上面的操作即可。 雙擊代碼全選 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49packagecom.eviac.blog.mongo; importjava.net.UnknownHostException; importcom.mongodb.BasicDBObject; importcom.mongodb.DB; importcom.mongodb.DBCollection; importcom.mongodb.DBCursor; importcom.mongodb.Mongo; importcom.mongodb.MongoException; publicclassMongoDBClient { publicstaticvoidmain(String[] args) { try{ Mongo mongo = newMongo("localhost", 27017); DB db = mongo.getDB("company"); DBCollection collection = db.getCollection("employees"); BasicDBObject employee = newBasicDBObject(); employee.put("name", "Hannah"); employee.put("no", 2); collection.insert(employee); BasicDBObject searchEmployee = newBasicDBObject(); 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(); } } } 結果如下:
9. 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);
}