標籤:
簡介:MongoDB[1] 是一個基於分布式檔案儲存體的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充的高效能資料儲存解決方案。
mongoDB
MongoDB[2] 是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似於物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
Distributed File System(Distributed File System)是指檔案系統管理的實體儲存體資源不一定直接連接在本地節點上,而是通過電腦網路與節點相連。Distributed File System的設計基於客戶機/伺服器模 式。一個典型的網路可能包括多個供多使用者訪問的伺服器。另外,對等特性允許一些系統扮演客戶機和伺服器的雙重角色。
HBase是一個分布式的、面向列的開來源資料庫,該技術來源於 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化資料的分布式儲存系統。
Yonghong Data Mart是基於自有技術研發的一款資料存放區、資料處理的軟體。Yonghong Data Mart的分布式檔案儲存體系統 (ZDFS)是在Hadoop HDFS基礎上進行的改造和擴充,將伺服器叢集內所有節點上儲存的檔案統一管理和儲存。
以上是對mongoDB的簡單介紹,通過介紹要使用MongoDB除了瞭解他的基本資料存放區,還要瞭解分布式系統如何部署,以及如何解決負載平衡問題。
以下內容是我閱讀了菜鳥教程進行的總結,主在熟悉基本命令,瞭解MongoDB功能特性等.
一. 基本使用以命令方式
- 資料庫建立
use DATABASE_NAME
- 查看資料庫
show dbsshow dbs
- 刪除資料庫
db.dropDatabase()
- 插入文檔
db.user.insert({_id:1,name:’mybo’})
插入語句使用類似json的bson
- 更新已存在文檔
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
參數說明:
- query : update的查詢條件,類似sql update查詢內where後面的。
- update : update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set後面的
- upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
- multi : 可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。
- writeConcern :可選,拋出異常的層級。
Exmple: db.col.update({‘title‘:‘MongoDB 教程‘},{$set:{‘title‘:‘MongoDB‘}},{multi:true})
- 替換文檔
db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一個 Nosql 資料庫",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
- 刪除文檔
db.col.remove({‘title‘:‘MongoDB 教程‘})
刪除第一條:db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
- 刪所有文檔
- db.col.remove({})
- 文檔查詢
db.col.find()//查詢所有
- 條件查詢例子
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
- 條件操作符
- (>) 大於 - $gt
- (<) 小於 - $lt
- (>=) 大於等於 - $gte
- (<= ) 小於等於 - $lte
- 類型操作
$type操作符是基於BSON類型來檢索集合中匹配的資料類型,並返回結果。
- limit 限制兩條資料
db.col.find({},{"title":1,_id:0}).limit(2)
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
- 我們除了可以使用limit()方法來讀取指定數量的資料外,還可以使用skip()方法來跳過指定數量的資料,skip方法同樣接受一個數字參數作為跳過的記錄條數。
db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
{ "title" : "Java 教程" }
- 排序
db.COLLECTION_NAME.find().sort({KEY:1})//1 升序 2 降序
- 建立索引
b.col.ensureIndex({"title":1})。
18. 彙總
MongoDB中彙總(aggregate)主要用於處理資料(諸如統計平均值,求和等),並返回計算後的資料結果。有點類似sql語句中的 count(*)。
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{
"result" : [
{
"_id" : "w3cschool.cc",
"num_tutorial" : 2
},
{
"_id" : "Neo4j",
"num_tutorial" : 1
}
],
"ok" : 1
}
- Regex
db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})
以上是對mongoDB的命令列操作,但是對於程式員來說一些簡單命令操作可以方便我們使用,但是對於作為一個從事java開發人員來說我希望是熟練l瞭解在java如何調用。
MongoDB基本命令