Recherche…


Syntaxe

  • insérer ( document ou tableau de documents )
  • insertOne ('document', {writeConcern: 'document'})
  • insertMany ({[document 1, document 2, ...]}, {writeConcern: document, ordonné: booléen})
  • trouver ( requête , projection )
  • findOne ( requête , projection )
  • mise à jour ( requête , mise à jour )
  • updateOne ( query , update , {upsert: boolean, writeConcern: document})
  • updateMany ( requête , update , {upert: boolean, writeConcern: document})
  • replaceOne ( requête , remplacement , {upsert: boolean, writeConcern: document})
  • supprimer ( query , justOne )
  • findAndModify ( requête , tri , mise à jour , options [facultatif] )

Remarques

La mise à jour et la suppression d'un document doivent être effectuées avec soin. Étant donné que l'opération peut affecter plusieurs documents.

Créer

db.people.insert({name: 'Tom', age: 28});

Ou

db.people.save({name: 'Tom', age: 28});

La différence avec save est que si le document contient un passé _id champ, si un document existe déjà avec cette _id il sera mis à jour au lieu d'être ajouté comme nouveau.

Deux nouvelles méthodes pour insérer des documents dans une collection, dans MongoDB 3.2.x: -

Utilisez insertOne pour insérer un seul enregistrement: -

db.people.insertOne({name: 'Tom', age: 28});

Utilisez insertMany pour insérer plusieurs enregistrements: -

db.people.insertMany([{name: 'Tom', age: 28},{name: 'John', age: 25}, {name: 'Kathy', age: 23}])

Notez que l' insert est mise en évidence comme obsolète dans chaque pilote de langue officielle depuis la version 3.0. La distinction complète est que les méthodes shell ont en fait pris du retard sur les autres pilotes dans la mise en œuvre de la méthode. La même chose s'applique à toutes les autres méthodes CRUD

Mettre à jour

Mettre à jour l'objet entier :

db.people.update({name: 'Tom'}, {age: 29, name: 'Tom'})

// New in MongoDB 3.2
db.people.updateOne({name: 'Tom'},{age: 29, name: 'Tom'}) //Will replace only first matching document.

db.people.updateMany({name: 'Tom'},{age: 29, name: 'Tom'}) //Will replace all matching documents.

Ou simplement mettre à jour un seul champ d'un document. Dans ce cas l' age :

db.people.update({name: 'Tom'}, {$set: {age: 29}})

Vous pouvez également mettre à jour plusieurs documents simultanément en ajoutant un troisième paramètre. Cette requête mettra à jour tous les documents dont le nom est égal à Tom :

db.people.update({name: 'Tom'}, {$set: {age: 29}}, {multi: true})

// New in MongoDB 3.2
db.people.updateOne({name: 'Tom'},{$set:{age: 30}) //Will update only first matching document.

db.people.updateMany({name: 'Tom'},{$set:{age: 30}}) //Will update all matching documents.

Si un nouveau champ est à venir pour la mise à jour, ce champ sera ajouté au document.

db.people.updateMany({name: 'Tom'},{$set:{age: 30, salary:50000}})// Document will have `salary` field as well.

Si un document doit être remplacé,

db.collection.replaceOne({name:'Tom'}, {name:'Lakmal',age:25,address:'Sri Lanka'})

peut être utilisé.

Remarque : Les champs que vous utilisez pour identifier l'objet seront enregistrés dans le document mis à jour. Les champs non définis dans la section de mise à jour seront supprimés du document.

Effacer

Supprime tous les documents correspondant au paramètre de requête:

// New in MongoDB 3.2
db.people.deleteMany({name: 'Tom'})

// All versions
db.people.remove({name: 'Tom'})

Ou juste un

// New in MongoDB 3.2
db.people.deleteOne({name: 'Tom'})

// All versions
db.people.remove({name: 'Tom'}, true)

La méthode remove() de MongoDB. Si vous exécutez cette commande sans argument ou sans argument vide, tous les documents seront supprimés de la collection.

db.people.remove();

ou

db.people.remove({});

Lis

Requête pour tous les documents de la collection de people qui ont un champ de name avec une valeur de 'Tom' :

db.people.find({name: 'Tom'})

Ou juste le premier:

db.people.findOne({name: 'Tom'})

Vous pouvez également spécifier les champs à renvoyer en transmettant un paramètre de sélection de champ. Les éléments suivants excluront le champ _id et incluront uniquement le champ age :

db.people.find({name: 'Tom'}, {_id: 0, age: 1})

Note: par défaut, le champ _id sera retourné, même si vous ne le demandez pas. Si vous ne souhaitez pas récupérer l' _id , vous pouvez simplement suivre l'exemple précédent et demander que l' _id soit exclu en spécifiant _id: 0 (ou _id: false ). Si vous souhaitez trouver un sous-enregistrement comme l'adresse, l'objet contient le pays , ville, etc.

db.people.find({'address.country': 'US'})

& spécifier le champ si nécessaire

db.people.find({'address.country': 'US'}, {'name': true, 'address.city': true})Remember that the result has a `.pretty()` method that pretty-prints resulting JSON:

db.people.find().pretty()

Plus d'opérateurs de mise à jour

Vous pouvez utiliser d'autres opérateurs que $set lors de la mise à jour d'un document. L'opérateur $push vous permet de pousser une valeur dans un tableau, dans ce cas nous allons ajouter un nouveau surnom au tableau des nicknames .

db.people.update({name: 'Tom'}, {$push: {nicknames: 'Tommy'}})
// This adds the string 'Tommy' into the nicknames array in Tom's document.

L'opérateur $pull est l'opposé de $push , vous pouvez extraire des éléments spécifiques des tableaux.

db.people.update({name: 'Tom'}, {$pull: {nicknames: 'Tommy'}})
// This removes the string 'Tommy' from the nicknames array in Tom's document.

L'opérateur $pop vous permet de supprimer la première ou la dernière valeur d'un tableau. Disons que le document de Tom a une propriété appelée frères et sœurs qui a la valeur ['Marie', 'Bob', 'Kevin', 'Alex'] .

db.people.update({name: 'Tom'}, {$pop: {siblings: -1}})
// This will remove the first value from the siblings array, which is 'Marie' in this case.


db.people.update({name: 'Tom'}, {$pop: {siblings: 1}})
// This will remove the last value from the siblings array, which is 'Alex' in this case.

Paramètre "multi" lors de la mise à jour de plusieurs documents

Pour mettre à jour plusieurs documents dans une collection, définissez l'option multi sur true.

db.collection.update(
   query,
   update,
   {
     upsert: boolean,
     multi: boolean,
     writeConcern: document
   }
)

multi est facultatif. Si défini sur true, met à jour plusieurs documents répondant aux critères de la requête. Si la valeur est false, met à jour un document. La valeur par défaut est false.

db.mycol.find () {"_id": ObjectId (598354878df45ec5), "title": "Présentation de MongoDB"} {"_id": ObjectId (59835487adf45ec6), "title": "Présentation de NoSQL"} {"_id": ObjectId (59835487adf45ec7), "title": "Présentation du point de tutoriels"}

db.mycol.update ({'title': 'MongoDB Overview'}, {$ set: {'title': 'Nouveau tutoriel MongoDB'}}, {multi: true})

Mise à jour des documents incorporés.

Pour le schéma suivant:

{name: 'Tom', age: 28, marks: [50, 60, 70]}

Mettez à jour les marques de Tom à 55 où les marques sont 50 (utilisez l'opérateur de position $):

db.people.update({name: "Tom", marks: 50}, {"$set": {"marks.$": 55}})

Pour le schéma suivant:

{name: 'Tom', age: 28, marks: [{subject: "English", marks: 90},{subject: "Maths", marks: 100}, {subject: "Computes", marks: 20}]}

Mettez à jour les marques anglaises de Tom à 85:

db.people.update({name: "Tom", "marks.subject": "English"},{"$set":{"marks.$.marks": 85}})

Expliquant l'exemple ci-dessus:

En utilisant {name: "Tom", "marks.subject": "English"}, vous obtiendrez la position de l'objet dans le tableau des marques, où sujet est l'anglais. Dans "marks. $. Marks", $ est utilisé pour mettre à jour dans cette position du tableau de marques

Mettre à jour les valeurs dans un tableau

L'opérateur positionnel $ identifie un élément dans un tableau à mettre à jour sans spécifier explicitement la position de l'élément dans le tableau.

Considérez une collection d'étudiants avec les documents suivants:

{ "_id" : 1, "grades" : [ 80, 85, 90 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }

Pour mettre à jour 80 à 82 dans le tableau grades du premier document, utilisez l'opérateur positional $ si vous ne connaissez pas la position de l'élément dans le tableau:

db.students.update(
   { _id: 1, grades: 80 },
   { $set: { "grades.$" : 82 } }
)


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow