Mise à jour du document MongoDB (exemple de code php)
Les documents de mise à jour de MongoDB sont divisés en deux catégories :
remplacement de document, qui remplace complètement l'ancien document par le nouveau document
modificateur , Modifier certains documents
Remplacement de documents
L'utilisation du remplacement de documents est très simple, voyons la démonstration ci-dessous :
$collect->insertOne(['name' => 'lakers', 'nums'=> 16]); $collect->replaceOne( ['name'=>'lakers'], ['name' => 'heat', 'nums'=>3] );
Utilisez des modificateurs pour effectuer des opérations de mise à jour plus complexes, telles que la modification, l'ajout ou la suppression de clés.
Modificateur "$set"
"$set" est utilisé pour spécifier la valeur d'un champ. Si ce champ n'existe pas, créez-le.
$collect->insertOne([ 'name' => 'james', 'age' => 35, ]); $collect->updateOne(['name'=>'james'], ['$set' => ['fruit' => 'apple']] ); // fruit字段不存在,则会创建该字段
Si vous n'aimez pas la pomme maintenant et que vous souhaitez passer à la fraise
$collect->updateOne(['name'=>'james'], ['$set' => ['fruit' => 'strawberry']] );
"$set" peut également modifier le type de clé.
# 不止喜欢草莓,还喜欢梨子、香蕉。 $collect->updateOne(['name'=>'james'], ['$set' => ['fruit' => ['strawberry', 'banana', 'pear'] ] ] );
"$set" peut également modifier les documents intégrés
$collect->insertOne([ 'name' => 'james', 'age' => 35, 'brothers' => ['name' => 'wade', 'age'=> 38] ]); $collect->updateOne(['name'=>'james'], ['$set' => ['brothers.name' => 'paul'] ] );
Modificateur "$unset"
Utiliser" Le $ le modificateur unset" peut supprimer le champ spécifié
$collect->updateOne(['name'=>'james'], ['$unset' => ['brothers' => ''] ] );
le modificateur "$inc", augmenter ou diminuer la valeur
et "$set" Like le modificateur, si le champ n'existe pas, il sera automatiquement créé. Remarque : Cette valeur de champ ne peut être que des nombres.
$collect->updateOne(['name'=>'james'], ['$inc' => ['scores' => 61] ] ); ## 现有积分61
Maintenant, 10 points ont été obtenus.
$collect->updateOne(['name'=>'james'], ['$inc' => ['scores' => 10] ] ); ## 现有积分71
Plus tard, j'ai dépensé 50 points
$collect->updateOne(['name'=>'james'], ['$inc' =>['scores' => -50] ] ); ## 现有积分21
Array Modifier
MongoDB fournit des modifications spéciales pour la méthode des tableaux.
"$push" ajoute des éléments
"$push" peut ajouter des éléments au tableau Si le tableau n'existe pas, il le fera. Créez automatiquement un tableau. Il existe maintenant un document utilisé pour enregistrer les données de l'article :
$collect->insertOne([ '_id' => 1, 'title'=>'study mongodb', 'create_time' => '2020-08-24 12 :31' ]); $push = ['$push' => ['comments' => 'comments1'] ]; $collect->updateOne(['_id' => 1 ], $push);
"$each" ajoute plusieurs éléments
'$push' peut être disposé en tableau at once Element, si vous souhaitez ajouter plusieurs éléments à la fois, vous devez utiliser « $each ».
$push = [ '$push' => ['comments' => ['$each' => ['comment1', 'comment2', 'comment3']] ] ]; $collect->updateOne(['_id' => 1 ], $push);
"$slice" conserve n éléments
'$push' et '$slicet' sont utilisés ensemble pour conserver les n derniers éléments Data, la valeur de « $slice » ne peut être que des entiers négatifs. Par exemple, je souhaite uniquement conserver les 3 derniers commentaires :
# 目前数据如下 > db.users.find() { "_id" : 1, "title" : "study mongodb", "create_time" : "2020-08-24 12:31", "comment" : [ "comment1", "comment2", "comment3", "comment4", "comment5", "comment6" ] }
$push = [ '$push' => [ 'comment' => [ '$each' => ['comment7', 'comment8', 'comment9'], '$slice' => -3 ], ], ]; $collect->updateOne(['_id' => 1 ], $push);
# 现数据如下 db.users.find() { "_id" : 1, "title" : "study mongodb", "create_time" : "2020-08-24 12:31", "comment" : [ "comment7", "comment8", "comment9" ] }
Le tri "$sort"
peut également être utilisé avec '$ sort' , conservez les 3 commentaires avec le plus de likes.
# 目前是集合内是空的,么有任何文档 $collect->insertOne(['_id' => 1, 'title'=>'study mongodb', 'create_time' => '2020-08-24 12:31']); $push = [ '$push' => [ 'comment' => [ '$each' => [ ['comment' => 'php', 'like' => 100], ['comment' => 'mysql', 'like' => 10], ['comment' => 'linux', 'like' => 200], ['comment' => 'java', 'like' => 1000], ['comment' => 'nginx', 'like' => 300], ['comment' => 'composer', 'like' => 500], ], '$slice' => -3, '$sort' => ['like' => 1] ], ], ];
Regardons à quoi ressemblent les données de la collection :
> db.users.find() { "_id" : 1, "title" : "study mongodb", "create_time" : "2020-08-24 12:31", "comment" : [ { "comment" : "nginx", "like" : 300 }, { "comment" : "composer", "like" : 500 }, { "comment" : "java", "like" : 1000 } ] }
Notez que vous ne pouvez pas simplement utiliser "$slice" ou "$sort" avec "$push ", et vous devez utiliser "$each".
"$addToSet" évite d'insérer des données en double
Lorsque vous utilisez "$addToSet" pour ajouter de nouveaux éléments de tableau, vous pouvez éviter ajout de données en double, telles que
$collect->insertOne([ '_id' => 1, 'name' => 'gwx', 'age' => 30, 'fruits' => ['apple', 'pear'] ]); $update = [ '$addToSet' => [ 'fruits' => 'apple' ] ];
La modification ci-dessus ne réussira pas car Apple existe déjà. '$addToSet' peut également être utilisé avec "$each" pour insérer plusieurs éléments de tableau.
$update = [ '$addToSet' => [ 'fruits' => [ '$each' => ['apple', 'banana', 'orange'] ] ] ]; $collect->updateOne(['_id' => 1], $update);
Supprimer l'élément
Vous pouvez supprimer l'élément le plus à gauche ou le plus à droite via "$pop".
$collect->insertOne([ '_id' => 1, 'name' => 'gwx', 'age' => 30, 'fruits' => ['apple', 'pear'] ]); #从数组末删除1个元素 $update = [ '$pop' => [ 'fruits' => 1 ] ]; $collect->updateOne(['_id' => 1], $update); # 从数组头删除一个元素 $update = [ '$pop' => [ 'fruits' => -1 ] ]; $collect->updateOne(['_id' => 1], $update);
Vous pouvez également supprimer l'élément spécifié via '$pull'
$collect->insertOne([ '_id' => 1, 'name' => 'gwx', 'age' => 30, 'fruits' => ['apple', 'pear', 'apple', 'banana', 'orange'] ]); #从数组末删除 $update = [ '$pull' => [ 'fruits' => 'apple' ] ];
Tous les éléments Apple du tableau ont été supprimés
upsert
upsert est un type particulier de mise à jour. Mais si un ensemble répondant aux conditions est trouvé, ce sera le même que la modification précédente. Si aucune collection répondant aux conditions n'est trouvée, elle sera insérée dans la collection en tant que nouveau document en utilisant les conditions de requête et le document modifié.
Ci-dessous, prenons comme exemple un scénario que nous rencontrons souvent : enregistrer le nombre de fois que chaque IP est consultée. S'il s'agit d'une nouvelle IP, elle est ajoutée à la collection. Si elle existe déjà, la collection d'origine est modifiée.
$collect->updateOne(['ip' => '116.31.23.1'], [ '$inc' =>[ 'views' => 1 ] ], ['upsert' => true]); $collect->updateOne(['ip' => '127.0.0.1'], [ '$inc' =>[ 'views' => 1 ] ], ['upsert' => true]); $collect->updateOne(['ip' => '116.31.23.1'], [ '$inc' =>[ 'views' => 1 ] ], ['upsert' => true]);
> db.users.find() { "_id" : ObjectId("5f4336f3a95f1a505db9a2df"), "ip" : "116.31.23.1", "views" : 2 } { "_id" : ObjectId("5f4336f3a95f1a505db9a2e1"), "ip" : "127.0.0.1", "views" : 1 }
Mise à jour de plusieurs documents
La mise à jour de plusieurs documents nécessite l'utilisation de la méthode updateMany(), comme illustré ci-dessous :
$collect->insertMany([ ['name' => 'gwx', 'age' => 30], ['name' => 'gwx', 'age' => 30], ['name' => 'gwx', 'age' => 30], ]); $collect->updateMany([ 'name' => 'gwx' ], ['$set' =>['age' => 18]] );
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Les solutions pour résoudre les problèmes d'expiration de Navicat incluent : renouveler la licence ; désinstaller et réinstaller ; désactiver les mises à jour automatiques ; utiliser la version gratuite de Navicat Premium ; contacter le support client de Navicat.

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

.NET 4.0 est utilisé pour créer une variété d'applications et offre aux développeurs d'applications des fonctionnalités riches, notamment : programmation orientée objet, flexibilité, architecture puissante, intégration du cloud computing, optimisation des performances, bibliothèques étendues, sécurité, évolutivité, accès aux données et mobile. soutien au développement.

Dans une architecture sans serveur, les fonctions Java peuvent être intégrées à la base de données pour accéder et manipuler les données de la base de données. Les étapes clés comprennent : la création de fonctions Java, la configuration des variables d'environnement, le déploiement de fonctions et le test des fonctions. En suivant ces étapes, les développeurs peuvent créer des applications complexes qui accèdent de manière transparente aux données stockées dans les bases de données.

Cet article présente comment configurer MongoDB sur Debian System pour réaliser une expansion automatique. Les étapes principales incluent la configuration de l'ensemble de répliques MongoDB et de la surveillance de l'espace disque. 1. Installation de MongoDB Tout d'abord, assurez-vous que MongoDB est installé sur le système Debian. Installez à l'aide de la commande suivante: SudoaptupDaSudoaptInstall-myongoDB-Org 2. Configuration de la réplique MongoDB Ensemble de répliques MongoDB assure la haute disponibilité et la redondance des données, ce qui est la base de la réalisation d'une expansion de capacité automatique. Démarrer le service MongoDB: Sudosystemctlstartmongodsudosys

Cet article décrit comment construire une base de données MongoDB hautement disponible sur un système Debian. Nous explorerons plusieurs façons de garantir que la sécurité des données et les services continueront de fonctionner. Stratégie clé: réplicaset: réplicaset: Utilisez des répliques pour obtenir la redondance des données et le basculement automatique. Lorsqu'un nœud maître échoue, l'ensemble de répliques élise automatiquement un nouveau nœud maître pour assurer la disponibilité continue du service. Sauvegarde et récupération des données: utilisez régulièrement la commande Mongodump pour sauvegarder la base de données et formuler des stratégies de récupération efficaces pour faire face au risque de perte de données. Surveillance et alarmes: déploier les outils de surveillance (tels que Prometheus, Grafana) pour surveiller l'état de course de MongoDB en temps réel, et

Pour se connecter à la base de données, Node.js fournit plusieurs packages de connecteurs de base de données pour MySQL, PostgreSQL, MongoDB et Redis. Les étapes de connexion comprennent : 1. Installez le package de connecteur correspondant ; 2. Créez un pool de connexions pour maintenir des connexions réutilisables. 3. Établissez une connexion avec la base de données. Remarque : L'opération est asynchrone et les erreurs doivent être gérées pour garantir la sécurité et optimiser les performances.

Oui, Navicat peut se connecter à la base de données MongoDB. Les étapes spécifiques incluent : Ouvrez Navicat et créez une nouvelle connexion. Sélectionnez le type de base de données comme MongoDB. Entrez l'adresse de l'hôte MongoDB, le port et le nom de la base de données. Entrez votre nom d'utilisateur et votre mot de passe MongoDB (si nécessaire). Cliquez sur le bouton "Connecter".
