Maison base de données tutoriel mysql 非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出,

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

Jun 07, 2016 pm 04:04 PM
mongodb nosql Relationnel 创建 备份 数据库 集合

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


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Jun 03, 2024 pm 12:19 PM

La sauvegarde et la restauration d'une base de données MySQL en PHP peuvent être réalisées en suivant ces étapes : Sauvegarder la base de données : Utilisez la commande mysqldump pour vider la base de données dans un fichier SQL. Restaurer la base de données : utilisez la commande mysql pour restaurer la base de données à partir de fichiers SQL.

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Comment gérer les erreurs de connexion à la base de données en PHP Comment gérer les erreurs de connexion à la base de données en PHP Jun 05, 2024 pm 02:16 PM

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

Comment utiliser les fonctions de rappel de base de données dans Golang ? Comment utiliser les fonctions de rappel de base de données dans Golang ? Jun 03, 2024 pm 02:20 PM

L'utilisation de la fonction de rappel de base de données dans Golang peut permettre : d'exécuter du code personnalisé une fois l'opération de base de données spécifiée terminée. Ajoutez un comportement personnalisé via des fonctions distinctes sans écrire de code supplémentaire. Des fonctions de rappel sont disponibles pour les opérations d'insertion, de mise à jour, de suppression et de requête. Vous devez utiliser la fonction sql.Exec, sql.QueryRow ou sql.Query pour utiliser la fonction de rappel.

Comment connecter Navicat à MongoDB Comment connecter Navicat à MongoDB Apr 24, 2024 am 11:27 AM

Pour vous connecter à MongoDB à l'aide de Navicat, vous devez : Installer Navicat Créer une connexion MongoDB : a. Entrez le nom de connexion, l'adresse de l'hôte et le port b. Entrez les informations d'authentification (si nécessaire) Ajoutez un certificat SSL (si nécessaire) Vérifiez la connexion. Enregistrez la connexion

Comment se connecter à une base de données distante à l'aide de Golang ? Comment se connecter à une base de données distante à l'aide de Golang ? Jun 01, 2024 pm 08:31 PM

Grâce au package base de données/sql de la bibliothèque standard Go, vous pouvez vous connecter à des bases de données distantes telles que MySQL, PostgreSQL ou SQLite : créez une chaîne de connexion contenant les informations de connexion à la base de données. Utilisez la fonction sql.Open() pour ouvrir une connexion à la base de données. Effectuez des opérations de base de données telles que des requêtes SQL et des opérations d'insertion. Utilisez defer pour fermer la connexion à la base de données afin de libérer des ressources.

Comment gérer les connexions et les opérations de base de données en utilisant C++ ? Comment gérer les connexions et les opérations de base de données en utilisant C++ ? Jun 01, 2024 pm 07:24 PM

Utilisez la bibliothèque DataAccessObjects (DAO) en C++ pour connecter et exploiter la base de données, notamment en établissant des connexions à la base de données, en exécutant des requêtes SQL, en insérant de nouveaux enregistrements et en mettant à jour les enregistrements existants. Les étapes spécifiques sont : 1. Inclure les instructions de bibliothèque nécessaires ; 2. Ouvrir le fichier de base de données ; 3. Créer un objet Recordset pour exécuter des requêtes SQL ou manipuler des données ; 4. Parcourez les résultats ou mettez à jour les enregistrements en fonction de besoins spécifiques.

See all articles