Szukaj…


Składnia

  • wstaw ( dokument lub tablica dokumentów )
  • insertOne („dokument”, {writeConcern: „dokument”})
  • insertMany ({[dokument 1, dokument 2, ...]}, {writeConcern: dokument, zamówiony: boolean})
  • znajdź ( zapytanie , rzut )
  • findOne ( zapytanie , projekcja )
  • aktualizacja ( zapytanie , aktualizacja )
  • updateOne ( zapytanie , aktualizacja , {upsert: boolean, writeConcern: document})
  • updateMany ( zapytanie , aktualizacja , {upsert: boolean, writeConcern: document})
  • replaceOne ( zapytanie , zamiana , {upsert: boolean, writeConcern: document})
  • usuń ( zapytanie , justOne )
  • findAndModify ( zapytanie , sortowanie , aktualizacja , opcje [opcjonalnie] )

Uwagi

Aktualizowanie i usuwanie dokumentu należy wykonywać ostrożnie. Ponieważ operacja może mieć wpływ na wiele dokumentów.

Stwórz

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

Lub

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

Różnica między save polega na tym, że jeśli przekazany dokument zawiera pole _id , jeśli dokument już istnieje z tym _id , zostanie zaktualizowany zamiast dodawany jako nowy.

Dwie nowe metody wstawiania dokumentów do kolekcji w MongoDB 3.2.x: -

Użyj insertOne aby wstawić tylko jeden rekord: -

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

Użyj insertMany aby wstawić wiele rekordów: -

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

Zauważ, że insert jest podświetlona jako przestarzała w każdym oficjalnym sterowniku języka od wersji 3.0. Całkowite rozróżnienie polega na tym, że metody powłoki faktycznie pozostawały w tyle za innymi sterownikami przy wdrażaniu metody. To samo dotyczy wszystkich innych metod CRUD

Aktualizacja

Zaktualizuj cały obiekt:

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.

Lub po prostu zaktualizuj pojedyncze pole dokumentu. W tym przypadku age :

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

Możesz także aktualizować wiele dokumentów jednocześnie, dodając trzeci parametr. To zapytanie zaktualizuje wszystkie dokumenty, których nazwa jest równa 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.

Jeśli pojawi się nowe pole do aktualizacji, to pole zostanie dodane do dokumentu.

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

Jeśli konieczne jest zastąpienie dokumentu,

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

może być użyte.

Uwaga : Pola używane do identyfikacji obiektu zostaną zapisane w zaktualizowanym dokumencie. Pole, które nie jest zdefiniowane w sekcji aktualizacji, zostanie usunięte z dokumentu.

Usunąć

Usuwa wszystkie dokumenty pasujące do parametru zapytania:

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

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

Lub tylko jeden

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

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

Metoda remove() MongoDB. Wykonanie tego polecenia bez żadnego argumentu lub bez pustego argumentu spowoduje usunięcie wszystkich dokumentów z kolekcji.

db.people.remove();

lub

db.people.remove({});

Czytać

Zapytanie do wszystkich dokumentów w kolekcji people które mają pole name o wartości 'Tom' :

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

Lub tylko pierwszy:

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

Możesz także określić, które pola mają zostać zwrócone, przekazując parametr wyboru pola. Poniższe wyklucza pole _id i obejmuje tylko pole age :

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

Uwaga: domyślnie pole _id zostanie zwrócone, nawet jeśli go nie poprosisz. Jeśli nie chcesz, aby uzyskać _id plecami, wystarczy postępować zgodnie z poprzedniego przykładu i poprosić o _id zostać wyłączone poprzez określenie _id: 0 (lub _id: false ) .Jeżeli chcesz znaleźć zapis sub jak obiekt zawiera adres kraj , miasto itp.

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

i w razie potrzeby podaj również pole

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

Więcej operatorów aktualizacji

Podczas aktualizacji dokumentu możesz używać innych operatorów oprócz $set . Operator $push pozwala na wypchnięcie wartości do tablicy, w tym przypadku dodamy nowy pseudonim do tablicy nicknames .

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

Operator $pull jest przeciwieństwem $push , możesz wyciągać określone elementy z tablic.

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

Operator $pop umożliwia usunięcie pierwszej lub ostatniej wartości z tablicy. Powiedzmy, że dokument Toma ma właściwość o nazwie rodzeństwo, która ma wartość ['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.

Parametr „multi” podczas aktualizacji wielu dokumentów

Aby zaktualizować wiele dokumentów w kolekcji, ustaw opcję multi na wartość true.

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

Multi jest opcjonalne. Jeśli ustawiona na wartość true, aktualizuje wiele dokumentów spełniających kryteria zapytania. Jeśli ustawione na false, aktualizuje jeden dokument. Wartość domyślna to false.

db.mycol.find () {„_id”: ObjectId (598354878df45ec5), „title”: „Omówienie MongoDB”} {„_id”: ObjectId (59835487adf45ec6), „title”: „Omówienie NoSQL”} {„_id”: ObjectId (59835487adf45ec7), „title”: „Omówienie punktów w samouczkach”}

db.mycol.update ({„title”: „Omówienie MongoDB”}, {$ set: {'title ”:„ Nowy samouczek MongoDB ”}}, {multi: true})

Aktualizacja osadzonych dokumentów.

Dla następującego schematu:

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

Zaktualizuj oceny Toma do 55, gdzie oceny wynoszą 50 (użyj operatora pozycyjnego $):

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

Dla następującego schematu:

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

Zaktualizuj znaki Tom's English do 85:

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

Wyjaśnienie powyższego przykładu:

Używając {name: „Tom”, „marks.subject”: „English”} uzyskasz pozycję obiektu w tablicy znaczników, gdzie przedmiotem jest angielski. W „marks. $. Marks” $ służy do aktualizacji w tej pozycji tablicy znaczników

Zaktualizuj wartości w tablicy

Operator pozycyjny $ identyfikuje element w tablicy, który ma zostać zaktualizowany, bez wyraźnego określania pozycji elementu w tablicy.

Rozważ uczniów z następujących dokumentów:

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

Aby zaktualizować 80 do 82 w tablicy ocen w pierwszym dokumencie, użyj operatora pozycyjnego $, jeśli nie znasz pozycji elementu w tablicy:

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow