Sök…


Syntax

  • infoga ( dokument eller grupp av dokument )
  • insertOne ('dokument', {writeConcern: 'document'})
  • insertMany ({[document 1, document 2, ...]}, {writeConcern: document, order: boolean})
  • hitta ( fråga , projektion )
  • findOne ( fråga , projektion )
  • uppdatering ( fråga , uppdatera )
  • updateOne ( fråga , uppdatera , {upsert: boolean, writeConcern: document})
  • updateMany ( fråga , uppdatera , {upsert: boolean, writeConcern: document})
  • byt ut en ( fråga , ersättning , {upsert: boolean, writeConcern: document})
  • ta bort ( fråga , justOne )
  • findAndModify ( fråga , sortera , uppdatera , alternativ [valfritt] )

Anmärkningar

Uppdatering och radering av ett dokument bör göras noggrant. Eftersom drift kan påverka för flera dokument.

Skapa

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

Eller

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

Skillnaden med save är att om det godkända dokumentet innehåller ett _id fält, om ett dokument redan finns med det _id kommer det att uppdateras istället för att läggas till som nytt.

Två nya metoder för att infoga dokument i en samling i MongoDB 3.2.x: -

Använd insertOne att bara infoga en post: -

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

Använd insertMany att infoga flera poster: -

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

Observera att insert markeras som föråldrad i alla officiella språkdrivrutiner sedan version 3.0. Den fulla distinktionen är att skalmetoderna faktiskt höll sig efter de andra förarna när de implementerade metoden. Samma sak gäller alla andra CRUD-metoder

Uppdatering

Uppdatera hela objektet:

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.

Eller bara uppdatera ett enda fält i ett dokument. I detta fall age :

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

Du kan också uppdatera flera dokument samtidigt genom att lägga till en tredje parameter. Denna fråga kommer att uppdatera alla dokument där namnet är lika med 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.

Om ett nytt fält kommer för uppdatering läggs det fältet till i dokumentet.

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

Om ett dokument behöver bytas ut,

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

kan användas.

Obs : Fält som du använder för att identifiera objektet kommer att sparas i det uppdaterade dokumentet. Fält som inte definieras i uppdateringsavsnittet kommer att tas bort från dokumentet.

Radera

Tar bort alla dokument som matchar frågeparametern:

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

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

Eller bara en

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

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

MongoDB: s metod för remove() . Om du kör detta kommando utan några argument eller utan tomt argument kommer det att tas bort alla dokument från samlingen.

db.people.remove();

eller

db.people.remove({});

Läsa

Query för alla dokument i people samling som har ett name fält med ett värde på 'Tom' :

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

Eller bara den första:

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

Du kan också ange vilka fält som ska returneras genom att passera en fältvalparameter. Följande kommer att utesluta _id fält och endast omfattar age

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

Obs! _id standard _id fältet _id att returneras, även om du inte ber om det. Om du vill inte få tillbaka _id kan du bara följa föregående exempel och be om att _id ska uteslutas genom att ange _id: 0 (eller _id: false ). Om du vill hitta _id: false innehåller land , stad, etc.

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

& ange fält också om det behövs

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

Fler uppdateringsoperatörer

Du kan använda andra operatörer förutom $set när du uppdaterar ett dokument. Med $push operatören kan du skjuta ett värde in i en matris, i detta fall lägger vi till ett nytt smeknamn till nicknames .

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

$pull operatören är motsatsen till $push , du kan dra specifika objekt från matriser.

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

Med $pop operatören kan du ta bort det första eller det sista värdet från en matris. Låt oss säga Toms dokument har en egenskap som heter syskon som har värdet ['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 vid uppdatering av flera dokument

För att uppdatera flera dokument i en samling ställer du in multi-alternativet till true.

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

multi är valfritt. Om den är satt, uppdaterar du flera dokument som uppfyller frågekriterierna. Om det är inställt på falskt uppdaterar du ett dokument. Standardvärdet är falskt.

db.mycol.find () {"_id": ObjectId (598354878df45ec5), "title": "MongoDB-översikt"} {"_id": ObjectId (59835487adf45ec6), "title": "NoSQL-översikt"} {"_id": ObjectId (59835487adf45ec7), "title": "Översikt över Tutorials Point"}

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

Uppdatering av inbäddade dokument.

För följande schema:

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

Uppdatera Toms märken till 55 där markeringarna är 50 (Använd position operatören $):

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

För följande schema:

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

Uppdatera Toms engelska markeringar till 85:

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

Förklarande exempel ovan:

Genom att använda {name: "Tom", "marks.subject": "English"} får du objektets position i markeringsfältet, där ämnet är engelska. I "markeringar. $. Markeringar" används $ för att uppdatera i den positionen för markeringsfältet

Uppdatera värden i en matris

Positionerings $ -operatören identifierar ett element i en matris som ska uppdateras utan att uttryckligen ange positionen för elementet i arrayen.

Tänk på en samling studenter med följande dokument:

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

Om du vill uppdatera 80 till 82 i betygsuppsättningen i det första dokumentet använder du position $ $ om du inte vet elementets position i arrayen:

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow