Maison  >  Article  >  développement back-end  >  Résumé des conseils et précautions de MongoDB

Résumé des conseils et précautions de MongoDB

小云云
小云云original
2017-12-01 11:28:261284parcourir

Mongodb, une base de données de stockage de documents distribuée, écrite en langage C++, vise à fournir des solutions de stockage de données évolutives et performantes pour les applications WEB. MongoDB est une base de données de documents hautes performances, open source et sans schéma, qui est actuellement une base de données NoSQL populaire. Cet article partagera avec vous les techniques de résolution des problèmes rencontrés lors de l'utilisation de MongoDB, et les partagera pour votre référence et votre apprentissage.

1. Rechercher les enregistrements dont les champs du tableau ne sont pas vides

Trouver les enregistrements dont les champs du tableau ne sont pas vides dans les données.

Par exemple : Il existe le document Mongo suivant,

{
 "id" : "581c060f2b436c05aafb1632",
 "commit_history" : [ 
 "581c20d52b436c05aafb1633", 
 "581c21c12b436c05aafb1634"
 ]
},
{
 "id" : "581c060f2b436c05aafb1633",
 "commit_history" : []
}

Si vous souhaitez rechercher des enregistrements dont commit_history n'est pas vide, il existe les méthodes suivantes :

Méthode 1 : db.collection .find({commit_history : {$not : {$size : 0}}})

Méthode 2 : db.collection.find({'commit_history.0' : {$exists : 1}})

2. Ajouter un utilisateur à MongoDB

Pour ajouter un utilisateur à une collection dans MongoDB, vous pouvez procéder comme suit :

utiliser collection_name pour passer à une bibliothèque

db.createUser(
 {
 user: "collection_name",
 pwd: "password",
 roles: [ "readWrite", "dbAdmin" ]
 }
)

3. Parfois il est nécessaire de supprimer la colonne du champ spécifié et d'utiliser l'opération de mise à jour.

Par exemple, pour supprimer la colonne de nom :

query json :

{"name":{$exists:true}}

mettre à jour json :

{$unset:{"name":""}}

4. Exportation de données, exécutez la commande mongoexport dans le répertoire bin de mongodb et définissez les paramètres pertinents

Par exemple :

./mongoexport -h 192.168.0.201 --port 27017 –d admin –u admin –p admin -c department -o /home/admin/department.dat

-h : Spécifiez l'IP de la base de données à connecter

- -port : Spécifiez le port de la base de données à connecter ;

-u : Spécifiez le nom d'utilisateur de la base de données à connecter ;

-p : Spécifiez le mot de passe utilisateur de la base de données à connecter ;

-d : Spécifiez le nom de la bibliothèque à connecter ;

-c : Spécifiez l'ensemble de données à exporter

- o : Précisez l'adresse de stockage cible des données à exporter

Remarque : (1) Il faut s'assurer que la base de données connectée est en fonctionnement normal


; (2) J'ai rencontré une fois une situation dans laquelle les informations utilisateur étaient ajoutées à la base de données et celle-ci n'était pas démarrée avec l'authentification de l'utilisateur lors du démarrage. Cependant, lors de l'exécution de cette commande, ce n'est qu'après avoir spécifié le nom d'utilisateur et le mot de passe que l'exportation a réussi. . Si quelqu’un rencontre une situation similaire, autant essayer.

5. Importez les données, exécutez la commande mongoimport dans le répertoire bin de mongodb et définissez les paramètres pertinents. L'explication des paramètres est la même que ci-dessus

Par exemple :

.
./mongoimport --port 27017 -d admin -u admin –p admin –c department /home/common/mongodb305/bin/department.dat


6. Problèmes de vérification des utilisateurs pour les bases de données non amdin :


Lorsque nous ajoutons des utilisateurs à la bibliothèque dans la base de données mongodb, nous pouvons utiliser les commandes suivantes dans la base de données cible, par exemple, ajoutez dans la bibliothèque mongoTest Un utilisateur avec des autorisations de lecture et d'écriture :

db.createUser({"user":"test","pwd":"123456","roles":["readWrite"]})


peut également être ajouté dans la base de données admin :

db.createUser({"user":"test","pwd":"123456","roles":[{"role":"readWrite","db":"test"},"readWrite"]})


Il est à noter qu'il y a une différence entre ces deux méthodes, et c'est cette différence qui m'a un jour trompé :

Lors de l'utilisation de la première méthode à ajouter, nous pouvons l'ajouter dans le répertoire bin de mongodb Exécutez directement la commande suivante pour entrer dans la base de données de test à utiliser, vous pouvez ajouter, supprimer, modifier et vérifier, vous pouvez également utiliser cet utilisateur ; Le nom et le mot de passe sont connectés dans mongoVUE :

./mongo -h 192.168.0.201 --port 27017 -u test -p 123456 -d test


Mais s'il est créé de la deuxième manière, alors si vous utilisez directement la commande ci-dessus, il vous demandera que la vérification a échoué Seulement si vous entrez d'abord mongo. Le shell est connecté à la base de données admin, puis la vérification peut être réussie lors du passage à la base de données de test. C'est un petit piège. Ceux qui ne connaissent pas la situation peuvent être très confus. Il est clair que le nom d'utilisateur et le mot de passe sont corrects, mais ils ne peuvent pas se connecter pour une raison quelconque.

7. La méthode de stockage des données par défaut de mongodb3.0 est toujours la même que celle de mongodb 2.6. J'ai essayé de passer à la nouvelle méthode de stockage et d'utiliser les paramètres suivants au démarrage. qu'il ne doit y avoir aucune donnée dans la base de données. Ceci n'est possible que si les données sont requises, sinon une erreur sera signalée :

./mongod -f /mongodb304/conf/mongodb.conf --storageEngine wiredTiger
Divers autres paramètres pour le démarrage, tels que dbpath, logpath, etc. ., sont configurés dans mongodb.conf.


Le contenu ci-dessus est un résumé des conseils et précautions pour l'utilisation quotidienne de MongoDB. J'espère qu'il pourra aider tout le monde.

Recommandations associées :

Qu'est-ce que la base de données mongoDB

Comment phpstudy étend MongoDB

Comment améliorer la sécurité de MongoDB

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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