九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Ubuntu下MongoDB的安裝和使用

本博文介紹了MongoDB,并詳細指引讀者在Ubuntu下MongoDB的安裝和使用。本教程在Ubuntu14.04下測試通過。

一、MongoDB介紹

MongoDB 是一個是一個基于分布式文件存儲的數(shù)據(jù)庫,介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。

二、安裝MongoDB

MongoDB安裝很簡單,無需下載源文件,可以直接用apt-get命令進行安裝。
打開終端,輸入以下命令:

sudo apt-get install mongodb
  • 1

截圖如下:


安裝完成后,在終端輸入以下命令查看MongoDB版本:

mongo -version
  • 1

輸出版本信息,表明安裝成功,截圖如下:


啟動和關(guān)閉mongodb命令如下:

service mongodb startservice mongodb stop
  • 1
  • 2

截圖如下:


默認設(shè)置MongoDB是隨Ubuntu啟動自動啟動的。
輸入以下命令查看是否啟動成功:

pgrep mongo -l #注意:-l是英文字母l,不是阿拉伯數(shù)字1
  • 1

截圖如下:


卸載MongoDB

sudo apt-get --purge remove mongodb mongodb-clients mongodb-server
  • 1

三、使用MongoDB

shell命令模式

輸入mongo進入shell命令模式,默認連接的數(shù)據(jù)庫是test數(shù)據(jù)庫,在此之前一定要確保你已經(jīng)啟動了MongoDB,否則會出現(xiàn)錯誤,啟動之后運行成功,如下截圖:

常用操作命令:

數(shù)據(jù)庫相關(guān)
show dbs:顯示數(shù)據(jù)庫列表
show collections:顯示當前數(shù)據(jù)庫中的集合(類似關(guān)系數(shù)據(jù)庫中的表table)
show users:顯示所有用戶
use yourDB:切換當前數(shù)據(jù)庫至yourDB
db.help() :顯示數(shù)據(jù)庫操作命令
db.yourCollection.help() :顯示集合操作命令,yourCollection是集合名
MongoDB沒有創(chuàng)建數(shù)據(jù)庫的命令,如果你想創(chuàng)建一個“School”的數(shù)據(jù)庫,先運行use School命令,之后做一些操作(如:創(chuàng)建聚集集合db.createCollection('teacher')),這樣就可以創(chuàng)建一個名叫“School”的數(shù)據(jù)庫。截圖如下:


下面以一個School數(shù)據(jù)庫為例,在School數(shù)據(jù)庫中創(chuàng)建兩個集合teacher和student,并對student集合中的數(shù)據(jù)進行增刪改查基本操作(集合Collection相當于關(guān)系型數(shù)據(jù)庫中的表table)。
1、切換到School數(shù)據(jù)庫

use School #切換到School數(shù)據(jù)庫。MongoDB 無需預創(chuàng)建School數(shù)據(jù)庫,在使用時會自動創(chuàng)建
  • 1

2、創(chuàng)建Collection

db.createCollection('teacher') #創(chuàng)建一個聚集集合。MongoDB 其實在插入數(shù)據(jù)的時候,也會自動創(chuàng)建對應(yīng)的集合,無需預定義集合
  • 1

截圖如下:


3、插入數(shù)據(jù)
與數(shù)據(jù)庫創(chuàng)建類似,插入數(shù)據(jù)時也會自動創(chuàng)建集合。
插入數(shù)據(jù)有兩種方式:insert和save。

db.student.insert({_id:1, sname: 'zhangsan', sage: 20}) #_id可選db.student.save({_id:1, sname: 'zhangsan', sage: 22}) #_id可選
  • 1
  • 2

這兩種方式,其插入的數(shù)據(jù)中_id字段均可不寫,會自動生成一個唯一的_id來標識本條數(shù)據(jù)。而insert和save不同之處在于:在手動插入_id字段時,如果_id已經(jīng)存在,insert不做操作,save做更新操作;如果不加_id字段,兩者作用相同都是插入數(shù)據(jù)。截圖如下:


添加的數(shù)據(jù)其結(jié)構(gòu)是松散的,只要是bson格式均可,列屬性均不固定,根據(jù)添加的數(shù)據(jù)為準。先定義數(shù)據(jù)再插入,就可以一次性插入多條數(shù)據(jù),截圖如下:

運行完以上例子,student 已自動創(chuàng)建,這也說明 MongoDB 不需要預先定義 collection ,在第一次插入數(shù)據(jù)后,collection 會自動的創(chuàng)建。截圖如下:

3、查找數(shù)據(jù)
db.youCollection.find(criteria, filterDisplay)
criteria :查詢條件,可選
filterDisplay:篩選顯示部分數(shù)據(jù),如顯示指定列數(shù)據(jù),可選(當選擇時,第一個參數(shù)不可省略,若查詢條件為空,可用{}做占位符,如下例第三句)

db.student.find() #查詢所有記錄。相當于:select * from studentdb.student.find({sname: 'lisi'}) #查詢sname='lisi'的記錄。相當于: select * from student where sname='lisi'db.student.find({},{sname:1, sage:1}) #查詢指定列sname、sage數(shù)據(jù)。相當于:select sname,sage from student。sname:1表示返回sname列,默認_id字段也是返回的,可以添加_id:0(意為不返回_id)寫成{sname: 1, sage: 1,_id:0},就不會返回默認的_id字段了db.student.find({sname: 'zhangsan', sage: 22}) #and 與條件查詢。相當于:select * from student where sname = 'zhangsan' and sage = 22db.student.find({$or: [{sage: 22}, {sage: 25}]}) #or 條件查詢。相當于:select * from student where sage = 22 or sage = 25
  • 1
  • 2
  • 3
  • 4
  • 5

查詢操作類似,這里只給出db.student.find({sname: 'lisi'})查詢的截圖,如下:

4、修改數(shù)據(jù)
db.youCollection.update(criteria, objNew, upsert, multi )
criteria: update的查詢條件,類似sql update查詢內(nèi)where后面的
objNew : update的對象和一些更新的操作符(如$set)等,也可以理解為sql update查詢內(nèi)set后面的。
upsert : 如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
multi: mongodb默認是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新。默認false,只修改匹配到的第一條數(shù)據(jù)。
其中criteria和objNew是必選參數(shù),upsert和multi可選參數(shù)
舉例如下:

db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true) #相當于:update student set sage =30 where sname = 'lisi';
  • 1

操作截圖如下:


5、刪除數(shù)據(jù)

db.student.remove({sname: 'chenliu'}) #相當于:delete from student where sname='chenliu'
  • 1

操作截圖如下:


6、退出shell命令模式
輸入exit或者Ctrl C退出shell命令模式

注意:MongoDB相較安全性更偏向易用性,默認是沒有開啟用戶權(quán)限的,如果想開啟用戶權(quán)限,可以參考Ubuntu下開啟MongoDB用戶權(quán)限。

Java API編程實例

第一步:下載Java MongoDB Driver驅(qū)動jar包,Java MongoDB Driver下載地址,默認的下載目錄為~/下載或者~/Downloads
第二步:打開Eclipse,新建Java Project,新建Class,引入剛剛下載的jar包
第三步:編碼實現(xiàn)
下面是源代碼:

import java.util.ArrayList;import java.util.List;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.Filters;public class TestMongoDB { /** * @param args */ public static void main(String[] args) { insert();//插入數(shù)據(jù)。執(zhí)行插入時,可將其他三句函數(shù)調(diào)用語句注釋掉,下同// find(); //查找數(shù)據(jù)// update();//更新數(shù)據(jù)// delete();//刪除數(shù)據(jù) } /** * 返回指定數(shù)據(jù)庫中的指定集合 * @param dbname 數(shù)據(jù)庫名 * @param collectionname 集合名 * @return */ //MongoDB無需預定義數(shù)據(jù)庫和集合,在使用的時候會自動創(chuàng)建 public static MongoCollection<Document> getCollection(String dbname,String collectionname){ //實例化一個mongo客戶端,服務(wù)器地址:localhost(本地),端口號:27017 MongoClient mongoClient=new MongoClient('localhost',27017); //實例化一個mongo數(shù)據(jù)庫 MongoDatabase mongoDatabase = mongoClient.getDatabase(dbname); //獲取數(shù)據(jù)庫中某個集合 MongoCollection<Document> collection = mongoDatabase.getCollection(collectionname); return collection; } /** * 插入數(shù)據(jù) */ public static void insert(){ try{ //連接MongoDB,指定連接數(shù)據(jù)庫名,指定連接表名。 MongoCollection<Document> collection= getCollection('test','student'); //實例化一個文檔,文檔內(nèi)容為{sname:'Mary',sage:25},如果還有其他字段,可以繼續(xù)追加append Document doc1=new Document('sname','Mary').append('sage', 25); //實例化一個文檔,文檔內(nèi)容為{sname:'Bob',sage:20} Document doc2=new Document('sname','Bob').append('sage', 20); List<Document> documents = new ArrayList<Document>(); //將doc1、doc2加入到documents列表中 documents.add(doc1); documents.add(doc2); //將documents插入集合 collection.insertMany(documents); System.out.println('插入成功'); }catch(Exception e){ System.err.println( e.getClass().getName() ': ' e.getMessage() ); } } /** * 查詢數(shù)據(jù) */ public static void find(){ try{ MongoCollection<Document> collection = getCollection('test','student'); //通過游標遍歷檢索出的文檔集合 // MongoCursor<Document> cursor= collection.find(new Document('sname','Mary')). projection(new Document('sname',1).append('sage',1).append('_id', 0)).iterator(); //find查詢條件:sname='Mary'。projection篩選:顯示sname和sage,不顯示_id(_id默認會顯示) //查詢所有數(shù)據(jù) MongoCursor<Document> cursor= collection.find().iterator(); while(cursor.hasNext()){ System.out.println(cursor.next().toJson()); } }catch(Exception e){ System.err.println( e.getClass().getName() ': ' e.getMessage() ); } } /** * 更新數(shù)據(jù) */ public static void update(){ try{ MongoCollection<Document> collection = getCollection('test','student'); //更新文檔 將文檔中sname='Mary'的文檔修改為sage=22 collection.updateMany(Filters.eq('sname', 'Mary'), new Document('$set',new Document('sage',22))); System.out.println('更新成功!'); }catch(Exception e){ System.err.println( e.getClass().getName() ': ' e.getMessage() ); } } /** * 刪除數(shù)據(jù) */ public static void delete(){ try{ MongoCollection<Document> collection = getCollection('test','student'); //刪除符合條件的第一個文檔 collection.deleteOne(Filters.eq('sname', 'Bob')); //刪除所有符合條件的文檔 //collection.deleteMany (Filters.eq('sname', 'Bob')); System.out.println('刪除成功!'); }catch(Exception e){ System.err.println( e.getClass().getName() ': ' e.getMessage() ); } }}
  • 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
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105

每次執(zhí)行完程序,都可以返回shell模式查看結(jié)果。如:在eclipse執(zhí)行完更新操作后,在shell模式輸入db.student.find(),可以查看student集合的所有數(shù)據(jù),截圖如下:

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mysql視圖的作用
SQLserver 數(shù)據(jù)庫系統(tǒng)概論補考題 - 東昊信息網(wǎng)
數(shù)據(jù)庫操作語言SQL數(shù)據(jù)處理的增、查、刪、改
《數(shù)據(jù)庫》實驗報告2
學數(shù)據(jù)庫這么久了,必須要掌握的MySQL常用語句,安排
操作SQL數(shù)據(jù)只需這四條指令
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服