非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出,
1 固定集合 固定集合值得是事先创建而且大小固定的集合 2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。 3 创建固定集合使
1 固定集合固定集合值得是事先创建而且大小固定的集合
2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制。
3 创建固定集合使用命令:
db.createCollection(“collectionName”,{capped:true,size:100000,max:100});
size:指定集合大小,单位为KB,max指定文档的数量
当指定文档数量上限时,必须同时指定大小。淘汰机制只有在容量还没有满时才会依据文档数量来工作。要是容量满了,淘汰机制依据容量来工作。
4 创建一个集合:
>db.createCollection("cap1",{capped:true,size:1000,max:100});
{ "ok" : 1 }
>
5 插入数据
> for(var i=1;i
...db.cap1.insert({name:"dongxue",age:i});
... }
WriteResult({ "nInserted" : 1 })
> db.cap1.find().count();
53 (大小之所以是53是因为大小超过了1000)
6 固定集合的应用场景:聊天记录,日志信息
淘汰机制:当满足size指定集合大小,不能再继续往固定集合中加数据。
固定集合的容量优先
当文档达到100条时,再添加的时候会替换先前的
7 备份与导入导出。
MongoDB提供了备份和回复的功能,分别是MongoDB下载目录下的mongodump.exe和mongorestore.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: 表示要备份到的文件目录
执行后的效果图:
7 另外启动一个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, db.setWriteConcern( db.unsetWriteConcern( 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 } > |
8 数据还原
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>
|
9 导入导出:
用到的应用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数据库中的用户被视为超级用户(即:管理员)
在认证之后,管理员可以读写所有数据库,执行特定的管理员命令,执行listDatabase和shutdown.
在开启安全检查之前,一定要至少一个管理员账号。
-
最少得保证有一个管理员账号(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 |

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Membuat sandaran dan memulihkan pangkalan data MySQL dalam PHP boleh dicapai dengan mengikuti langkah berikut: Sandarkan pangkalan data: Gunakan arahan mysqldump untuk membuang pangkalan data ke dalam fail SQL. Pulihkan pangkalan data: Gunakan arahan mysql untuk memulihkan pangkalan data daripada fail SQL.

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Penyelesaian untuk menyelesaikan isu tamat tempoh Navicat termasuk: memperbaharui lesen dan menyahpasang semula kemas kini automatik, hubungi Navicat Premium Essentials;

Cara mengintegrasikan GoWebSocket dengan pangkalan data: Sediakan sambungan pangkalan data: Gunakan pakej pangkalan data/sql untuk menyambung ke pangkalan data. Simpan mesej WebSocket ke pangkalan data: Gunakan pernyataan INSERT untuk memasukkan mesej ke dalam pangkalan data. Dapatkan semula mesej WebSocket daripada pangkalan data: Gunakan pernyataan SELECT untuk mendapatkan semula mesej daripada pangkalan data.

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Menggunakan fungsi panggil balik pangkalan data di Golang boleh mencapai: melaksanakan kod tersuai selepas operasi pangkalan data yang ditentukan selesai. Tambah tingkah laku tersuai melalui fungsi berasingan tanpa menulis kod tambahan. Fungsi panggil balik tersedia untuk operasi memasukkan, mengemas kini, memadam dan pertanyaan. Anda mesti menggunakan fungsi sql.Exec, sql.QueryRow atau sql.Query untuk menggunakan fungsi panggil balik.

Untuk menyambung ke MongoDB menggunakan Navicat, anda perlu: Pasang Navicat Buat sambungan MongoDB: a Masukkan nama sambungan, alamat hos dan port b Masukkan maklumat pengesahan (jika perlu) Tambah sijil SSL (jika perlu) Sahkan sambungan Simpan sambungan
