Zoeken…


Syntaxis

  • invoegen ( document of reeks documenten )
  • insertOne ('document', {writeConcern: 'document'})
  • insertMany ({[document 1, document 2, ...]}, {writeConcern: document, besteld: boolean})
  • zoeken ( zoekopdracht , projectie )
  • findOne ( query , projectie )
  • update ( zoekopdracht , update )
  • updateOne ( query , update , {upsert: boolean, writeConcern: document})
  • updateMany ( query , update , {upsert: boolean, writeConcern: document})
  • replaOne ( query , vervanger , {upsert: boolean, writeConcern: document})
  • remove ( query , justOne )
  • findAndModify ( zoeken , sorteren , bijwerken , opties [optioneel] )

Opmerkingen

Het bijwerken en verwijderen van een document moet zorgvuldig gebeuren. Aangezien de bewerking van invloed kan zijn op meerdere documenten.

creëren

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

Of

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

Het verschil met save is dat als het doorgegeven document een veld _id bevat, als er al een document met dat _id bestaat, het wordt bijgewerkt in plaats van dat het als nieuw wordt toegevoegd.

Twee nieuwe methoden om documenten in een verzameling in te voegen, in MongoDB 3.2.x: -

Gebruik insertOne om slechts één record in te voegen: -

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

Gebruik insertMany om meerdere records in te voegen: -

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

Merk op dat insert gemarkeerd is als verouderd in elk officieel taalstuurprogramma sinds versie 3.0. Het volledige onderscheid is dat de shell-methoden eigenlijk achterbleven bij de andere stuurprogramma's bij de implementatie van de methode. Hetzelfde geldt voor alle andere CRUD-methoden

Bijwerken

Update het hele object:

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.

Of update gewoon een enkel veld van een document. In dit geval age :

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

U kunt ook meerdere documenten tegelijkertijd bijwerken door een derde parameter toe te voegen. Deze zoekopdracht werkt alle documenten bij waarvan de naam gelijk is aan 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.

Als er een nieuw veld komt voor update, wordt dat veld aan het document toegevoegd.

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

Als een document moet worden vervangen,

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

kan worden gebruikt.

Opmerking : velden die u gebruikt om het object te identificeren, worden opgeslagen in het bijgewerkte document. Veld dat niet in de update-sectie is gedefinieerd, wordt uit het document verwijderd.

Delete

Hiermee verwijdert u alle documenten die overeenkomen met de parameter query:

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

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

Of slechts een

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

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

De methode remove() MongoDB. Als u deze opdracht zonder enig argument of zonder leeg argument uitvoert, worden alle documenten uit de verzameling verwijderd.

db.people.remove();

of

db.people.remove({});

Lezen

Query voor alle documenten in de people collectie die een hebben name veld met een waarde van 'Tom' :

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

Of alleen de eerste:

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

U kunt ook opgeven welke velden moeten worden geretourneerd door een veldselectieparameter door te geven. Het volgende zal het veld _id uitsluiten en alleen het veld age :

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

Opmerking: standaard wordt het veld _id geretourneerd, zelfs als u er niet om vraagt. Als u de _id terug wilt krijgen, kunt u gewoon het vorige voorbeeld volgen en vragen om de _id uit te sluiten door _id: 0 (of _id: false ) op te geven. Als u een _id: false wilt vinden zoals _id: false land bevat , stad, etc.

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

& geef indien nodig ook een veld op

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()

Meer update-operators

U kunt naast $set andere operators gebruiken bij het bijwerken van een document. Met de $push operator kun je een waarde in een array pushen, in dit geval voegen we een nieuwe bijnaam toe aan de array met nicknames .

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

De $pull operator is het tegenovergestelde van $push , u kunt specifieke items uit arrays halen.

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

Met de $pop operator kunt u de eerste of de laatste waarde uit een array verwijderen. Stel dat het document van Tom een eigenschap heeft met de naam broers en zussen die de waarde ['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.

"multi" -parameter tijdens het bijwerken van meerdere documenten

Als u meerdere documenten in een verzameling wilt bijwerken, stelt u de multi-optie in op true.

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

multi is optioneel. Indien ingesteld op true, worden meerdere documenten bijgewerkt die voldoen aan de querycriteria. Indien ingesteld op false, wordt één document bijgewerkt. De standaardwaarde is false.

db.mycol.find () {"_id": ObjectId (598354878df45ec5), "title": "MongoDB Overzicht"} {"_id": ObjectId (59835487adf45ec6), "title": "NoSQL Overzicht"} {"_id": ObjectId (59835487adf45ec7), "title": "Tutorials Puntoverzicht"}

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

Update van ingesloten documenten.

Voor het volgende schema:

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

Werk de markeringen van Tom bij naar 55 waar markeringen 50 zijn (gebruik de positionele operator $):

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

Voor het volgende schema:

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

Update Tom's Engelse cijfers naar 85:

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

Uitleg van het bovenstaande voorbeeld:

Door {name: "Tom", "marks.subject": "English"} te gebruiken, krijgt u de positie van het object in de array met tekens, waarbij het onderwerp Engels is. In "markeringen. $. Markeringen" wordt $ gebruikt om in die positie van de reeks met markeringen bij te werken

Werk waarden in een array bij

De positionele $ operator identificeert een element in een array om bij te werken zonder expliciet de positie van het element in de array op te geven.

Overweeg een verzameling studenten met de volgende documenten:

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

Als u 80 tot 82 in de cijferreeks in het eerste document wilt bijwerken, gebruikt u de positionele $ -operator als u de positie van het element in de reeks niet kent:

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow