MongoDB
非關係型數據庫
1.1 Windows環境下安裝
官網地址:https://www.mongodb.com/download-center#community
1.2 數據目錄安裝
安裝成功後,目錄結構如下:
MongoDB將數據目錄存儲在 db 目錄下。但是這個數據目錄不會主動創建,我們在安裝完成後需要創建它。請注意,數據目錄應該放在盤根目錄下
在 D盤 新建文件夾 data, 文件夾 data下新建db
1.3 命令行下運行MongoDB
cmd命令,到MongoDB安裝目錄bin下
執行以下命令: mongod --dbpath d:\data\db
如執行成功,如圖:
mongodb默認連接端口27017,如果出現如圖的情況,可以打開http://localhost:27017查看(筆者這裏是chrome),發現如圖則表示連接成功,如果不成功,可以查看端口是否被佔用。
至此,安裝成功!! 此時服務器也爲啓動狀態
1.4 MongoDB操作命令
服務啓動成功後 就需要操作了。這時候我們需要再打開一個dos窗口(服務啓動的窗口不要關閉)找到安裝路徑(我的安裝路徑 爲 D:install\mongoDB\bin) 執行 mongo 此時第一個dos窗口(也就是啓動服務的窗口會顯示)
然後,繼續在該目錄下通過命令行進行查看:
操作命令:
1. 基本操作:
操作指令 | 釋義 | |
基本操作 | show dbs | 顯示所有數據庫 |
use xxx | 選擇用哪個數據庫 | |
db.createCollection("集合名稱",{capped:true,size:100000}) | 創建集合 | |
document={"1":"2","3":"4"} | 新建文檔 | |
db.printCollectionStats(); | 查看當前數據庫下的所有集合 |
2. 插入操作:
可以先定義一個文檔document ,後將文檔插入到集合中。或者直接將輸入插入到集合中。
db.集合名稱.insert(已定義的文檔);
db.集合名稱.insert(數據);
3. 查詢:
db.集合名稱.find();顯示文檔
db.集合名稱.find(where);
查詢姓名爲字符類型的數據記錄
:$type操作符是基於BSON類型來檢索集合中匹配的結果。
db.集合名稱.find({"name":{$type:2}});
Double 1
String 2
Object 3
Array 4
Binary data 5
Object id 7
Boolean 8
Date 9
Null 10
Regular expression 11
JavaScript code 13
Symbol 14
JavaScript code with scope 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255
Max key 127
db.集合名稱.find({條件}).limit(10); // 滿足條件的,取10條
3. 更新操作
db.集合名稱.update(where,set,未找到插入新的爲true,更新多條爲true);
db.集合名稱.update({"id":"1"},{"$set":{"name":"yuan","sex":"男"}},false,true);
更新添加字段:$push
---db.student.update({"sno":2},{$push:{"classes":"san"}})
4. 刪除操作
db.集合名稱.remove(where);
db.集合名稱.remove();刪除全部記錄
db.集合名稱.drop();刪除全部文檔(document)
5. 操作符
(>) 大於 - $gt ---db.student.find({"sno":{"$gt":2}})
(<) 小於 - $lt---db.student.find({"sno":{"$lt":2}})
(>=) 大於等於 - $gte --示例:db.student.find({"sno":{"$gte":2}});
(<= ) 小於等於 - $lte --
6. 其他操作
db.集合名稱.Count(where); ---顯示滿足條件的條數---db.student.count({"sno":{$type:1}});
db.集合名稱.distinct("key"); ---得到所有key的value(去掉重複的)---db.student.distinct("sno");
7. 管理
查看collection數據的大小
db.集合名稱.dataSize()
#查看colleciont狀態 db.集合名稱.stats()
#查詢所有索引的大小 db.集合名稱.totalIndexSize()
8. MongoDB與MySQL對比
|
MongoDB |
|
查詢全部 |
movies.find(new Document()) |
SELECT * FROM movies |
條件查詢 |
movies.Find(new Document { { "title", "Hello Esr" } }); |
SELECT * FROM movies WHERE title= 'foobar' |
查詢數量 |
movies.Find(new Document { { "title", "測試2" } }).Documents.Count(); |
SELECT COUNT(*) FROM movies WHERE `title` = 'foobar' |
數量範圍查詢 |
1, movies.Find(new Document().Add("$where", new Code("this.num > 50"))); |
select * from movies where num > 50 |
分頁查詢 |
movies.Find(new Document()).Skip(10).Limit(20); |
SELECT * FROM movies limit 10,20 |
查詢排序語句 |
movies.Find(new Document()).Sort(new Document() { { "num", -1 } }); |
SELECT * FROM movies ORDER BY num DESC |
查詢指定字段 |
movies.Find(new Document().Add("num", new Document().Add("$gt", 50)), 10, 0, new Document() { { "title", 1 } }); |
select title from movies where num > 50 |
插入語句 |
movies.Insert(new Document() { { "title", "測試" }, { "resuleData", DateTime.Now } }); |
INSERT INOT movies (`title`, `reauleDate`) values ('foobar',25) |
刪除語句 |
movies.Remove(new Document() { { "title", "Hello Esr" } }); |
DELETE * FROM movies |
更新語句 |
movies.Update(new Document() { { "title", "測試2" } } |
UPDATE movies SET `title` = ‘測試1111’ WHERE `title` = '測試1111' |
Linq查詢 |
(from item in db.GetCollection("movies").Linq() |
select * from movies where title like ‘%Esr’ |