標籤:
MongoDb
標籤(空格分隔): 資料庫 MongoDb
安裝
目前的版本 2.X解壓至任意目錄,最好不要是c盤. 在根目錄下建立一個檔案夾用來儲存工程我的例子: 安裝至: d:\mongodb 建立儲存目錄 d:\mongodb\blog 運行CMD,切入bin目錄 cd d:\mongodb\bin 啟用資料庫 mongod -dbpath “d:\mongodb\blog” 這樣就完畢了,如果關閉CMD,資料庫就會關閉. 建立一個快速啟動的bat檔案,因為每次啟動伺服器都是這樣的命令 啟動mongodb.bat: d:\mongodb\bin\mongod.exe -dbpath d:\mongodb\blog
Node.js 中使用
1. package.json dependencies對象中加入 "mongodb": "*"2. 在工程目錄下運行 npm install 更新依賴檔案3. 引入
var Db = require(‘mongodb’).Db; var Connection = require(‘mongodb’).Connection; var Server = require(‘mongodb’).Server; // ‘blog’ 資料庫名稱 mongodb就是一個Db執行個體 var mongodb = new Db(‘blog’, new Server(‘localhost’, Connection.DEFAULT_PORT, {}));
Db API
屬性: serverConfig 拓撲結構, 比如上面執行個體的 new Server(‘localhost’, Connection.DEFAULT_PORT, {}) bufferMaxEntries 資料庫當前緩衝區值 databaseName 當前資料庫名稱, 比如上面執行個體的’blog’
API: //將使用者添加到該資料庫 Db.addUser(username, password, options, callback) //刪除使用者 Db.removeUser(username, callback) //返回管理員資料庫執行個體 Db.admin() //驗證使用者 Db.authenticate(username, password, options, callback) //關閉串連 force布爾值,是否強制關閉 Db.close(force, callback) //取一個特定集合 Db.collection(name, options, callback) //擷取所有集合 Db.collections(callback) //建立一個集合 Db.createCollection(name, options, callback) //建立索引 Db.createIndex(name, fieldOrSpec, options, callback) //刪除集合 Db.dropCollection(name, callback) //刪除資料庫 Db.dropDatabase(callback) //擷取集合中的資訊 Db.listCollections(name, options, callback) //開啟資料庫 Db.open(callback) //登出資料庫 Db.logout(options, callback) //統計所有資料 Db.stats(options, callback)
一般使用流程: //開啟資料庫 Db.open(function(err,db){ //讀取集合 db.collection(name,function(err,collection){ //在集合中插入資料 collection.insert({‘age’:21,‘email’:‘xxxx’}, {safe: true}, function(err, user){Db.close();}) })
})
collection API
API: //查詢匹配文檔的數目 count(query, options, callback) //建立索引 createIndex(fieldOrSpec, options, callback) //刪除多個文檔 deleteMany(filter, options, callback) //刪除一個文檔 deleteOne(filter, options, callback) //刪除集合 drop(callback) //刪除集合中的索引 dropAllIndexes(callback) //刪除指定索引 dropIndex(indexName, options, callback) //是否存在索引,不存在就建立 ensureIndex(fieldOrSpec, options, callback) //查詢 find(query) //查詢第一個 findOne(query, options, callback) //尋找和替換文檔 findAndModify(query, sort, doc, options, callback) //尋找並刪除 findAndRemove(query, sort, options, callback) //找到一個檔案並刪除 findOneAndDelete(filter, options, callback) //找到一個檔案並替換 findOneAndReplace(filter, replacement, options, callback) //找到一個檔案並更新 findOneAndUpdate(filter, update, options, callback) //所有索引集合 indexes(callback) //檢查集合中是否存在索引 indexExists(indexes, callback) //擷取此集合的索引資訊 indexInformation(options, callback) //批量寫 initializeOrderedBulkOp(options, callback)
//插入文檔到資料庫中 docs 對象或數組, insert(docs, options, callback)執行個體inset({‘a‘:1}, {w:1},function(err,data){})//插入數組insertMany(docs, options, callback)//插入一個單個檔案insertOne(doc, options, callback)//重建索引reIndex(callback)//刪除檔案remove(selector, options, callback)//重新命名集合rename(newName, options, callback)//儲存save(doc, options, callback)//統計所有資料stats(options, callback)//更新集合update(selector, document, options, callback)
基礎文檔
多個鍵和值有序的放置在一起便是文檔,基本資料單元 javascript 中,文檔表示為對象. 每個文檔都有一個 _id 的鍵,值在所處集合中是唯一的 有序的: (下面2個文檔完全不同) {‘title‘:‘xueyou‘, ‘Age‘:21} {‘Age‘:21, ‘title‘:‘xueyou‘} 文法: 鍵不能包含 \0 Null 字元, 這個字元表示鍵的結尾 . 和 $ 有特殊含義,通常保留 _ 開頭的鍵通常也要保留,雖然不強制 MongoDb區分類型也區分大小寫 文檔不能有重複的鍵
集合
看做是表,多個文檔組成集合 文法: 不能包含 \0 Null 字元 不能使空串 "" 不能包含 $ 不能 system 開頭.系統保留 system.users儲存著資料庫內使用者的資訊 system.namespaces 儲存著所有資料庫集合的資訊
資料庫
多個集合組成資料庫. 一個MongoDB執行個體可以承載多個資料庫,每個資料庫有獨立的許可權 文法: 不能空串,全部小寫,最多64位元組,不能特殊字元 因為資料庫名稱會變成系統的檔案 資料庫保留名稱: admin - local - config
shell
MongoDb 內建javascript shell; 可以運行任何javascript程式, DOM和瀏覽器模型不算 啟動資料庫, 進入bin 運行mongo 啟動shell 目前的版本 2.6.5 預設串連 test 資料庫, 並將這個資料庫賦值給全域變數 db
API helo 擷取協助 exit 退出shell
db.help() 查看資料庫的APIdb.foo.help() 查看集合的API//擷取集合db.getCollection(‘集合名‘)//切換到 foobar資料庫,這個時候全域變數 db 就是foobar資料庫switched to db foobar//插入一個文檔到集合中, db.集合名.insertdb.blog.insert(對象)**查詢時shell預設最多顯示20個匹配文檔**//返回集合裡所有文檔db.blog.find()//查看集合裡的一個文檔db.blog.findOne()//更新文檔db/blog.update({title:‘aa‘},文檔對象)//從資料庫永久刪除文檔,無參時刪除集合內所有文檔db.blog.remove();
其他
mongod.exe 啟動資料庫,沒參數的時候預設資料目錄在 c:\data\dbm使用27017連接埠, 同時還會啟動一個HTTP伺服器,監聽比連接埠號碼大1000的連接埠28017連接埠. 訪問: http://localhost:28017 可以擷取資料庫的管理資訊
Node.js 手冊查詢-2-MongoDB資料庫方法