摘要:上一篇提到為我們提供的客戶端管理工具是,可以用它操作數(shù)據(jù)庫,進行增刪改查。對比刪除集合中的所有文檔保留集合刪除集合數(shù)據(jù)更新方法用于更新已存在的文檔參數(shù)說明的查詢條件,類似查詢內(nèi)后面的。可選,拋出異常的級別。
上一篇提到:mongodb 為我們提供的客戶端管理工具是mongo,可以用它操作數(shù)據(jù)庫,進行增刪改查(CRUD)。
現(xiàn)在我們?nèi)缟弦徽履菢樱瑔觤ongod,再啟動mongo
不記得的同學(xué)跟著截圖看一遍
創(chuàng)建、刪除數(shù)據(jù)庫use DATABASE_NAME
如果不存在,則創(chuàng)建,否則直接切換到該數(shù)據(jù)庫
顯示當(dāng)前所在的數(shù)據(jù)庫
db
顯示所有數(shù)據(jù)庫
show dbs
刪除數(shù)據(jù)庫
db.dropDatabase()
MongoDB 創(chuàng)建數(shù)據(jù)庫 中文文檔
寫入數(shù)據(jù)(文檔)文檔的數(shù)據(jù)結(jié)構(gòu)和json基本一致
所有存儲在集合中都是BSON格式
BSON是一種類json的一種二進制形式的存儲格式,簡稱Binary JSON
>db.col.insert({title: "MongoDB 教程", description: "MongoDB 是一個 Nosql 數(shù)據(jù)庫", by: "菜鳥教程", url: "http://www.runoob.com", tags: ["mongodb", "database", "NoSQL"], likes: 100 })
上面我們提到j(luò)s是可以使用在mongodb中的,我們再來看看其他示例:
刪除文檔db.collection.remove(, )
query :(可選)刪除的文檔的條件。
justOne : (可選)如果設(shè)為 true 或 1,則只刪除一個文檔。
對比
刪除集合中的所有文檔(保留集合):db.col.remove({})
刪除集合:db.col.drop()
> db.col.find() { "_id" : ObjectId("56c55cf5ca446fab71e4c382"), "x" : 1 } { "_id" : ObjectId("56c55cf6ca446fab71e4c383"), "x" : 1 } { "_id" : ObjectId("56c55cffca446fab71e4c384"), "x" : 1 } > db.col.remove({x:1}, 1) WriteResult({ "nRemoved" : 1 }) > db.col.find() { "_id" : ObjectId("56c55cf6ca446fab71e4c383"), "x" : 1 } { "_id" : ObjectId("56c55cffca446fab71e4c384"), "x" : 1 } > db.col.remove({x:1}) WriteResult({ "nRemoved" : 2 }) > db.col.find()數(shù)據(jù)更新
update()
update() 方法用于更新已存在的文檔
db.collection.update(, , { upsert: , multi: , writeConcern: } )
參數(shù)說明:
query : update的查詢條件,類似sql update查詢內(nèi)where后面的。
update : update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內(nèi)set后面的
upsert : 可選,這個參數(shù)的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新。
writeConcern :可選,拋出異常的級別。
我們在集合 jx_collection中插入如下數(shù)據(jù):
接著我們通過 update() 方法來更新標(biāo)題(title):
更多實例只更新第一條記錄:
db.jx_collection.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.jx_collection.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一條:
db.jx_collection.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加加進去:
db.jx_collection.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.jx_collection.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一條記錄:
db.jx_collection.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );更多命令速查
save()
db.AddUser(username,password) 添加用戶 db.auth(usrename,password) 設(shè)置數(shù)據(jù)庫連接驗證 db.cloneDataBase(fromhost) 從目標(biāo)服務(wù)器克隆一個數(shù)據(jù)庫 db.commandHelp(name) returns the help for the command db.copyDatabase(fromdb,todb,fromhost) 復(fù)制數(shù)據(jù)庫fromdb---源數(shù)據(jù)庫名稱,todb---目標(biāo)數(shù)據(jù)庫名稱,fromhost---源數(shù)據(jù)庫服務(wù)器地址 db.createCollection(name,{size:3333,capped:333,max:88888}) 創(chuàng)建一個數(shù)據(jù)集,相當(dāng)于一個表 db.currentOp() 取消當(dāng)前庫的當(dāng)前操作 db.dropDataBase() 刪除當(dāng)前數(shù)據(jù)庫 db.eval(func,args) run code server-side db.getCollection(cname) 取得一個數(shù)據(jù)集合,同用法:db["cname"] or db.getCollenctionNames() 取得所有數(shù)據(jù)集合的名稱列表 db.getLastError() 返回最后一個錯誤的提示消息 db.getLastErrorObj() 返回最后一個錯誤的對象 db.getMongo() 取得當(dāng)前服務(wù)器的連接對象get the server db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair db.getName() 返回當(dāng)操作數(shù)據(jù)庫的名稱 db.getPrevError() 返回上一個錯誤對象 db.getProfilingLevel() db.getReplicationInfo() 獲得重復(fù)的數(shù)據(jù) db.getSisterDB(name) get the db at the same server as this onew db.killOp() 停止(殺死)在當(dāng)前庫的當(dāng)前操作 db.printCollectionStats() 返回當(dāng)前庫的數(shù)據(jù)集狀態(tài) db.printReplicationInfo() db.printSlaveReplicationInfo() db.printShardingStatus() 返回當(dāng)前數(shù)據(jù)庫是否為共享數(shù)據(jù)庫 db.removeUser(username) 刪除用戶 db.repairDatabase() 修復(fù)當(dāng)前數(shù)據(jù)庫 db.resetError() db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1} db.setProfilingLevel(level) 0=off,1=slow,2=all db.shutdownServer() 關(guān)閉當(dāng)前服務(wù)程序 db.version() 返回當(dāng)前程序的版本信息 db.test.find({id:10}) 返回test數(shù)據(jù)集ID=10的數(shù)據(jù)集 db.test.find({id:10}).count() 返回test數(shù)據(jù)集ID=10的數(shù)據(jù)總數(shù) db.test.find({id:10}).limit(2) 返回test數(shù)據(jù)集ID=10的數(shù)據(jù)集從第二條開始的數(shù)據(jù)集 db.test.find({id:10}).skip(8) 返回test數(shù)據(jù)集ID=10的數(shù)據(jù)集從0到第八條的數(shù)據(jù)集 db.test.find({id:10}).limit(2).skip(8) 返回test數(shù)據(jù)集ID=1=的數(shù)據(jù)集從第二條到第八條的數(shù)據(jù) db.test.find({id:10}).sort() 返回test數(shù)據(jù)集ID=10的排序數(shù)據(jù)集 db.test.findOne([query]) 返回符合條件的一條數(shù)據(jù) db.test.getDB() 返回此數(shù)據(jù)集所屬的數(shù)據(jù)庫名稱 db.test.getIndexes() 返回些數(shù)據(jù)集的索引信息 db.test.group({key:...,initial:...,reduce:...[,cond:...]}) db.test.mapReduce(mayFunction,reduceFunction,導(dǎo)入集合) db.test.remove(query) 在數(shù)據(jù)集中刪除一條數(shù)據(jù) db.test.renameCollection(newName) 重命名些數(shù)據(jù)集名稱 db.test.save(obj) 往數(shù)據(jù)集中插入一條數(shù)據(jù) db.test.stats() 返回此數(shù)據(jù)集的狀態(tài) db.test.storageSize() 返回此數(shù)據(jù)集的存儲大小 db.test.totalIndexSize() 返回此數(shù)據(jù)集的索引文件大小 db.test.totalSize() 返回些數(shù)據(jù)集的總大小 db.test.update(query,object[,upsert_bool]) 在此數(shù)據(jù)集中更新一條數(shù)據(jù) db.test.validate() 驗證此數(shù)據(jù)集 db.test.getShardVersion() 返回數(shù)據(jù)集共享版本號
MongoDB:導(dǎo)入集合( mongoimport )
MongoDB地理索引初探
比如這里 我們有 neighborhoods.json 和 restaurants.json 兩個文件,導(dǎo)入test的數(shù)據(jù)庫中
linux命令:
mongorestore -d db_name 文件夾目錄 // mongorestore --host 127.0.0.1 --port 27017 -d db_name 文件夾目錄
windows命令:
mongorestore.exe -d db_name 文件夾目錄
Node.js 連接 MongoDB
nodejs 插入數(shù)據(jù)//插入數(shù)據(jù) //http://www.runoob.com/nodejs/nodejs-mongodb.html var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://127.0.0.1:27017/test"; var insertData = function (db, callback) { //連接到表site var collection = db.collection("site"); //插入數(shù)據(jù) var data = [{"name":"鏡心的小樹屋","url":"www.jxdxsw.com"},{"name":"segmentfault","url":"https://segmentfault.com"}]; collection.insert(data,function(err,result) { if(err) { console.log("Error:" + err); return } callback(result) }); } MongoClient.connect(DB_CONN_STR, function(err,db) { console.log("連接成功"); insertData(db,function(result) { console.log(result); db.close(); }); });
在test數(shù)據(jù)庫中創(chuàng)建site 集合
nodejs 查詢數(shù)據(jù)//查詢數(shù)據(jù) //以下實例檢索 name 為 "鏡心的小樹屋" 的實例: var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/test"; var selectData = function(db, callback) { //連接到表 var collection = db.collection("site"); // 查詢數(shù)據(jù) var whereStr = {"name": "鏡心的小樹屋"}; collection.find(whereStr).toArray(function(err, result) { if(err) {console.log("err:" + err); return } callback(result) }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("連接成功"); selectData(db, function(result) { console.log(result); db.close(); }); });nodejs更新數(shù)據(jù)
//更新數(shù)據(jù) //我們也可以對數(shù)據(jù)庫的數(shù)據(jù)進行修改,以下實例將 name 為 "鏡心的小樹屋" 的 url 改為 http:youlishu.com var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/test"; var updateData = function(db, callback) { //連接到表 var collection = db.collection("site"); //更新數(shù)據(jù) var whereStr = {"name":"鏡心的小樹屋"}; var updateStr = {$set: { "url" : "http:youlishu.com" }}; collection.update(whereStr,updateStr, function(err, result) { if(err) { console.log("Error:"+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("連接成功!"); updateData(db, function(result) { console.log(result); db.close(); }); });nodejs刪除數(shù)據(jù)
//刪除數(shù)據(jù) //以下實例將 name 為 "鏡心的小樹屋" 的數(shù)據(jù)刪除 : var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/test"; var delData = function(db, callback) { //連接到表 var collection = db.collection("site"); //刪除數(shù)據(jù) var whereStr = {"name":"鏡心的小樹屋"}; collection.remove(whereStr, function(err, result) { if(err) { console.log("Error:"+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("連接成功!"); delData(db, function(result) { console.log(result); db.close(); }); });參考
MongoDB中文文檔
MongoDB操作
大家在mongodb上使用的GUI工具主要有那些?
MongoDB 生態(tài) - 官方命令行工具
npm mongodb
CRUD 操作
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19079.html
摘要:聲明構(gòu)造函數(shù),作用是把從數(shù)據(jù)庫取出的數(shù)據(jù)實例化為對象。該構(gòu)造函數(shù)傳入的值為從中取出的數(shù)據(jù)省略接口提供增刪改查接口實現(xiàn)提供增刪改查接口實現(xiàn)提供了一個類似于的設(shè)計的類。 本文快速入門,MongoDB 結(jié)合SpringBoot starter-data-mongodb 進行增刪改查 1、什么是MongoDB ? MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。...
摘要:前言上一篇中初階系列一用戶和權(quán)限介紹了用戶和權(quán)限,這一篇將介紹如何在中進行增刪改查。這是初階系列的第二篇,接下來還有第三篇,借助,更優(yōu)雅地操作數(shù)據(jù)。 前言 上一篇中(mongoDB初階系列一:用戶和權(quán)限)介紹了用戶和權(quán)限,這一篇將介紹如何在node中進行增刪改查。 準(zhǔn)備 首先,要在node中使用mongoDB,需要安裝MongoDB Driver,命令如下:npm install mo...
摘要:前言上一篇中初階系列一用戶和權(quán)限介紹了用戶和權(quán)限,這一篇將介紹如何在中進行增刪改查。這是初階系列的第二篇,接下來還有第三篇,借助,更優(yōu)雅地操作數(shù)據(jù)。 前言 上一篇中(mongoDB初階系列一:用戶和權(quán)限)介紹了用戶和權(quán)限,這一篇將介紹如何在node中進行增刪改查。 準(zhǔn)備 首先,要在node中使用mongoDB,需要安裝MongoDB Driver,命令如下:npm install mo...
摘要:啟動啟動服務(wù)輸入命令進入操作終端,需要新開窗口基礎(chǔ)語法查看當(dāng)前所有的數(shù)據(jù)庫查看當(dāng)前所有的數(shù)據(jù)庫新建數(shù)據(jù)庫創(chuàng)建的數(shù)據(jù)庫這個時候是看不到的,因為數(shù)據(jù)庫里沒有任何東西。查找集合所有信息班創(chuàng)建一個集合,并插入一條數(shù)據(jù),數(shù)據(jù)里是帶有對象的。 1、啟動mongodb mongod -f /usr/local/etc/mongod.conf //啟動服務(wù) mongo //輸入命令進入mongo操作...
摘要:項目地址寫在開頭本文主要分享我如何使用對實現(xiàn)增刪改查操作,感謝社區(qū)所有精品文章的幫助,以及的開源項目對我的啟發(fā)。我們這個項目是建立一個班級學(xué)生管理系統(tǒng),能夠?qū)W(xué)生的姓名及學(xué)號進行增刪改查的操作。 項目地址:https://github.com/jrainlau/mongoose_cru... 寫在開頭 本文主要分享我如何使用express+mongoose對mongodb實現(xiàn)增刪改查...
閱讀 3524·2021-11-17 17:01
閱讀 3933·2021-11-08 13:12
閱讀 2487·2021-10-08 10:04
閱讀 707·2021-09-29 09:35
閱讀 1429·2021-09-26 10:12
閱讀 2056·2021-09-07 09:58
閱讀 1964·2019-08-30 15:55
閱讀 2142·2019-08-30 13:14