首頁 資料庫 mysql教程 非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出,

非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出,

Jun 07, 2016 pm 04:04 PM
mongodb nosql 關係型 創建 備份 資料庫 集合

1 固定集合 固定集合值得是事先创建而且大小固定的集合 2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。 3 创建固定集合使

固定集合

固定集合值得是事先创建而且大小固定的集合

固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。

创建固定集合使用命令:

db.createCollection(“collectionName”,{capped:true,size:100000,max:100});

size:指定集合大小,单位为KB,max指定文档的数量

当指定文档数量上限时,必须同时指定大小。淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制依据容量来工作。

创建一个集合:

>db.createCollection("cap1",{capped:true,size:1000,max:100});

{ "ok" : 1 }

\

插入数据

> for(var i=1;i

...db.cap1.insert({name:"dongxue",age:i});

... }

WriteResult({ "nInserted" : 1 })

> db.cap1.find().count();

53   (大小之所以是53是因为大小超过了1000

\

固定集合的应用场景:聊天记录,日志信息

      淘汰机制:当满足size指定集合大小,不能再继续往固定集合中加数据。

      固定集合的容量优先

当文档达到100条时,再添加的时候会替换先前的

 

备份与导入导出。

MongoDB提供了备份和回复的功能,分别是MongoDB下载目录下的mongodump.exemongorestore.exe文件。

 

备份数据使用下面的命令:

mongodump –h dbhost –d dbname –o dbdirectory

-h:MonDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017,当然该目录需要提前创建,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。 

mongodump -h localhost:27017 -d toto -of:/beifeng

-h:用来指定要输出的数据库所在的ip地址和端口号

-d:  指定要备份的数据库

-o:  表示要备份到的文件目录

执行后的效果图:

\

\

另外启动一个mongodb的客户端,目的是将数据库中toto数据库删掉

C:\Users\to-to>mongo

MongoDB shell version: 2.6.4

connecting to: test

> use toto;

switched to db toto

> db.help();

DB methods:

        db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.r

unCommand(...) ]

        db.auth(username, password)

        db.cloneDatabase(fromhost)

        db.commandHelp(name) returns the help for the command

        db.copyDatabase(fromdb, todb, fromhost)

        db.createCollection(name, { size : ..., capped : ..., max : ... } )

        db.createUser(userDocument)

        db.currentOp() displays currently executing operations in the db

        db.dropDatabase()

        db.eval(func, args) run code server-side

        db.fsyncLock() flush data to disk and lock server for backups

        db.fsyncUnlock() unlocks server following a db.fsyncLock()

        db.getCollection(cname) same as db['cname'] or db.cname

        db.getCollectionNames()

        db.getLastError() - just returns the err msg string

        db.getLastErrorObj() - return full status object

        db.getMongo() get the server connection object

        db.getMongo().setSlaveOk() allow queries on a replication slave server

        db.getName()

        db.getPrevError()

        db.getProfilingLevel() - deprecated

        db.getProfilingStatus() - returns if profiling is on and slow threshold

        db.getReplicationInfo()

        db.getSiblingDB(name) get the db at the same server as this one

        db.getWriteConcern() - returns the write concern used for any operations on this db, inherit

ed from server object if set

        db.hostInfo() get details about the server's host

        db.isMaster() check replica primary status

        db.killOp(opid) kills the current operation in the db

        db.listCommands() lists all the db commands

        db.loadServerScripts() loads all the scripts in db.system.js

        db.logout()

        db.printCollectionStats()

        db.printReplicationInfo()

        db.printShardingStatus()

        db.printSlaveReplicationInfo()

        db.dropUser(username)

        db.repairDatabase()

        db.resetError()

        db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj

 : 1 }

        db.serverStatus()

        db.setProfilingLevel(level,) 0=off 1=slow 2=all

        db.setWriteConcern( ) - sets the write concern for writes to the db

        db.unsetWriteConcern( ) - unsets the write concern for writes to the db

        db.setVerboseShell(flag) display extra information in shell output

        db.shutdownServer()

        db.stats()

        db.version() current version of the server

> db.dropDatabase();

{ "dropped" : "toto", "ok" : 1 }

\

\

数据还原

mongorestore -h localhost:27017 -d toto -directoryperdb F:/beifeng/toto

-h:MongoDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d:需要备份的数据库实例,例如test

-o:备份的数据存放位置,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放数据库实例的备份数据。

C:\Users\to-to> mongorestore -h localhost:27017 -d toto -directoryperdb F:/beifeng/toto

connected to: localhost:27017

2014-10-15T23:19:11.071+0800 F:/beifeng/toto\c3.bson

2014-10-15T23:19:11.071+0800    going into namespace [toto.c3]

2014-10-15T23:19:14.009+0800            Progress: 5740200/54000000      10%     (bytes)

2014-10-15T23:19:17.010+0800            Progress: 10125000/54000000     18%     (bytes)

2014-10-15T23:19:20.010+0800            Progress: 15660000/54000000     29%     (bytes)

2014-10-15T23:19:23.011+0800            Progress: 22528800/54000000     41%     (bytes)

2014-10-15T23:19:26.013+0800            Progress: 29586600/54000000     54%     (bytes)

2014-10-15T23:19:29.013+0800            Progress: 36752400/54000000     68%     (bytes)

2014-10-15T23:19:32.000+0800            Progress: 43372800/54000000     80%     (bytes)

2014-10-15T23:19:35.001+0800            Progress: 50284800/54000000     93%     (bytes)

1000000 objects found

2014-10-15T23:19:36.579+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "toto.c3" }

2014-10-15T23:19:36.641+0800    Creating index: { unique: true, key: { age: 1 }, name: "age_1", ns:

"toto.c3" }

2014-10-15T23:19:41.440+0800 F:/beifeng/toto\cap1.bson

2014-10-15T23:19:41.440+0800    going into namespace [toto.cap1]

2014-10-15T23:19:41.440+0800    Created collection toto.cap1 with options: { "create" : "cap1", "cap

ped" : true, "size" : 4096, "max" : 100 }

53 objects found

2014-10-15T23:19:41.440+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "toto.cap1" }

2014-10-15T23:19:41.440+0800 F:/beifeng/toto\cap2.bson

2014-10-15T23:19:41.440+0800    going into namespace [toto.cap2]

2014-10-15T23:19:41.440+0800    Created collection toto.cap2 with options: { "create" : "cap2", "cap

ped" : true, "size" : 4096, "max" : 100 }

file F:/beifeng/toto\cap2.bson empty, skipping

2014-10-15T23:19:41.456+0800    Creating index: { key: { _id: 1 }, name: "_id_", ns: "toto.cap2" }

 

C:\Users\to-to>

\

 

 

导入导出:

用到的应用mongoexport,mongoimport

mongoexport –h dhost –d dbname –c collectionName –o output

参数说明:

-h 数据库地址

-d 指明使用的库

-c 指明要导出的集合

-o 指明要导出的文件名

dname:表示要导出的数据库

collectionName:表示导出哪个集合

output:表示导出到的位置。

C:\Users\to-to>mongoexport -h localhost:27017 -d toto -c c3 -o f:/beifen/c3.txt

connected to: localhost:27017

exported 1000000 records

 

C:\Users\to-to>

\

\

\

同样可以数据导出到doc

数据导入:

mongoimport -h localhost:27017 -d toto -c ccc f:/beifen/c3.txt

\

C:\Users\to-to>mongo

MongoDB shell version: 2.6.4

connecting to: test

> use toto

switched to db toto

> show tables;

c3

cap1

cap2

ccc

system.indexes

> db.ccc.find();

{ "_id" : ObjectId("543e7473256769913d467e75"), "name" : "zhangsan", "age" : 1 }

{ "_id" : ObjectId("543e7473256769913d467e76"), "name" : "zhangsan", "age" : 2 }

{ "_id" : ObjectId("543e7473256769913d467e77"), "name" : "zhangsan", "age" : 3 }

{ "_id" : ObjectId("543e7473256769913d467e78"), "name" : "zhangsan", "age" : 4 }

{ "_id" : ObjectId("543e7473256769913d467e79"), "name" : "zhangsan", "age" : 5 }

{ "_id" : ObjectId("543e7473256769913d467e7a"), "name" : "zhangsan", "age" : 6 }

{ "_id" : ObjectId("543e7473256769913d467e7b"), "name" : "zhangsan", "age" : 7 }

{ "_id" : ObjectId("543e7473256769913d467e7c"), "name" : "zhangsan", "age" : 8 }

{ "_id" : ObjectId("543e7473256769913d467e7d"), "name" : "zhangsan", "age" : 9 }

{ "_id" : ObjectId("543e7473256769913d467e7e"), "name" : "zhangsan", "age" : 10 }

{ "_id" : ObjectId("543e7473256769913d467e7f"), "name" : "zhangsan", "age" : 11 }

{ "_id" : ObjectId("543e7473256769913d467e80"), "name" : "zhangsan", "age" : 12 }

{ "_id" : ObjectId("543e7473256769913d467e81"), "name" : "zhangsan", "age" : 13 }

{ "_id" : ObjectId("543e7473256769913d467e82"), "name" : "zhangsan", "age" : 14 }

{ "_id" : ObjectId("543e7473256769913d467e83"), "name" : "zhangsan", "age" : 15 }

{ "_id" : ObjectId("543e7473256769913d467e84"), "name" : "zhangsan", "age" : 16 }

{ "_id" : ObjectId("543e7473256769913d467e85"), "name" : "zhangsan", "age" : 17 }

{ "_id" : ObjectId("543e7473256769913d467e86"), "name" : "zhangsan", "age" : 18 }

{ "_id" : ObjectId("543e7473256769913d467e87"), "name" : "zhangsan", "age" : 19 }

{ "_id" : ObjectId("543e7473256769913d467e88"), "name" : "zhangsan", "age" : 20 }

Type "it" for more

\

上面自动隐式创建了一个ccc集合。

 

9 mongodb安全认证

每个mongodb实例中的数据库都可以有许多用户,如果开启了安全性检查,只有数据库认证用户才能执行读或者写操作。在认证的上下文中,MongoDB会将普通的数据作为admin

数据库处理。Admin数据库中的用户被视为超级用户(即:管理员)

在认证之后,管理员可以读写所有数据库,执行特定的管理员命令,执行listDatabaseshutdown.

在开启安全检查之前,一定要至少一个管理员账号。

  1. 最少得保证有一个管理员账号(admin 数据库当中的用户都是管理员)

    use admin

    db.addUser(“username”,”password”);

2.有了管理员账号,就可以为其它的数据库分配用户。

    2.1 首先要跳转到被分配的数据库

3.需要重新启动mongodb服务,开启安全检查

4.接下来的客户端连接mongodb,需要登录才能执行相应的操作。

C:\Users\to-to>mongo localhost:27017/admin

MongoDB shell version: 2.6.4

connecting to: localhost:27017/admin

> db

admin


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 Apr 18, 2025 am 11:48 AM

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

MySQL與其他數據庫:比較選項 MySQL與其他數據庫:比較選項 Apr 15, 2025 am 12:08 AM

MySQL適合Web應用和內容管理系統,因其開源、高性能和易用性而受歡迎。 1)與PostgreSQL相比,MySQL在簡單查詢和高並發讀操作上表現更好。 2)相較Oracle,MySQL因開源和低成本更受中小企業青睞。 3)對比MicrosoftSQLServer,MySQL更適合跨平台應用。 4)與MongoDB不同,MySQL更適用於結構化數據和事務處理。

MySQL:結構化數據和關係數據庫 MySQL:結構化數據和關係數據庫 Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

CentOS MongoDB備份策略是什麼 CentOS MongoDB備份策略是什麼 Apr 14, 2025 pm 04:51 PM

CentOS系統下MongoDB高效備份策略詳解本文將詳細介紹在CentOS系統上實施MongoDB備份的多種策略,以確保數據安全和業務連續性。我們將涵蓋手動備份、定時備份、自動化腳本備份以及Docker容器環境下的備份方法,並提供備份文件管理的最佳實踐。手動備份:利用mongodump命令進行手動全量備份,例如:mongodump-hlocalhost:27017-u用戶名-p密碼-d數據庫名稱-o/備份目錄此命令會將指定數據庫的數據及元數據導出到指定的備份目錄。

CentOS上GitLab的數據庫如何選擇 CentOS上GitLab的數據庫如何選擇 Apr 14, 2025 pm 04:48 PM

CentOS系統上GitLab數據庫部署指南選擇合適的數據庫是成功部署GitLab的關鍵步驟。 GitLab兼容多種數據庫,包括MySQL、PostgreSQL和MongoDB。本文將詳細介紹如何選擇並配置這些數據庫。數據庫選擇建議MySQL:一款廣泛應用的關係型數據庫管理系統(RDBMS),性能穩定,適用於大多數GitLab部署場景。 PostgreSQL:功能強大的開源RDBMS,支持複雜查詢和高級特性,適合處理大型數據集。 MongoDB:流行的NoSQL數據庫,擅長處理海

現實世界Mysql:示例和用例 現實世界Mysql:示例和用例 Apr 14, 2025 am 12:15 AM

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。

Debian MongoDB如何進行數據加密 Debian MongoDB如何進行數據加密 Apr 12, 2025 pm 08:03 PM

在Debian系統上為MongoDB數據庫加密,需要遵循以下步驟:第一步:安裝MongoDB首先,確保您的Debian系統已安裝MongoDB。如果沒有,請參考MongoDB官方文檔進行安裝:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/第二步:生成加密密鑰文件創建一個包含加密密鑰的文件,並設置正確的權限:ddif=/dev/urandomof=/etc/mongodb-keyfilebs=512

See all articles