Buscar..


Sintaxis

  • Insertar ( documento o matriz de documentos )
  • insertOne ('document', {writeConcern: 'document'})
  • insertMany ({[documento 1, documento 2, ...]}, {writeConcern: documento, ordenado: booleano})
  • encontrar ( consulta , proyección )
  • findOne ( consulta , proyección )
  • actualizar ( consultar , actualizar )
  • updateOne ( consulta , actualización , {upsert: boolean, writeConcern: document})
  • updateMany ( consulta , actualización , {upsert: boolean, writeConcern: document})
  • replaceOne ( consulta , reemplazo , {upsert: boolean, writeConcern: document})
  • eliminar ( consulta , justOne )
  • findAndModify ( consultar , ordenar , actualizar , opciones [opcional] )

Observaciones

La actualización y eliminación de un documento debe hacerse con cuidado. Dado que la operación puede afectar para varios documentos.

Crear

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

O

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

La diferencia con save es que si el documento aprobado contiene un campo _id , si ya existe un documento con ese _id , se actualizará en lugar de agregarse como nuevo.

Dos nuevos métodos para insertar documentos en una colección, en MongoDB 3.2.x:

Utilice insertOne para insertar un solo registro: -

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

Use insertMany para insertar múltiples registros: -

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

Tenga en cuenta que la insert se resalta como obsoleta en todos los controladores de idioma oficiales desde la versión 3.0. La distinción completa es que los métodos de shell en realidad se quedaron atrás de los otros controladores en la implementación del método. Lo mismo se aplica para todos los otros métodos de CRUD

Actualizar

Actualizar todo el objeto:

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.

O simplemente actualizar un solo campo de un documento. En este caso la age :

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

También puede actualizar varios documentos simultáneamente agregando un tercer parámetro. Esta consulta actualizará todos los documentos donde el nombre sea igual a 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 se va a actualizar un nuevo campo, ese campo se agregará al documento.

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

Si se necesita reemplazar un documento,

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

puede ser usado.

Nota : Los campos que utiliza para identificar el objeto se guardarán en el documento actualizado. Los campos que no estén definidos en la sección de actualización se eliminarán del documento.

Borrar

Borra todos los documentos que coinciden con el parámetro de consulta:

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

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

O solo uno

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

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

El método remove() MongoDB. Si ejecuta este comando sin ningún argumento o sin un argumento vacío, eliminará todos los documentos de la colección.

db.people.remove();

o

db.people.remove({});

Leer

Consulte todos los documentos en la colección de people que tienen un campo de name con un valor de 'Tom' :

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

O solo el primero:

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

También puede especificar qué campos devolver al pasar un parámetro de selección de campo. Lo siguiente excluirá el campo _id y solo incluirá el campo de age :

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

Nota: de forma predeterminada, se _id campo _id , incluso si no lo solicita. Si desea no obtener el _id vuelta, sólo puede seguir el ejemplo anterior y pedir la _id ser excluido especificando _id: 0 (o _id: false ) Si usted quiere encontrar el registro secundario como objeto de dirección contiene país , ciudad, etc.

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

& especifique el campo también si es necesario

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

Más operadores de actualización

Puede utilizar otros operadores además de $set al actualizar un documento. El operador $push permite insertar un valor en una matriz, en este caso agregaremos un nuevo apodo a la matriz de nicknames .

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

El operador $pull es lo opuesto a $push , puede extraer elementos específicos de las matrices.

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

El operador $pop permite eliminar el primer o el último valor de una matriz. Digamos que el documento de Tom tiene una propiedad llamada hermanos que tiene el valor ['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.

Parámetro "multi" al actualizar varios documentos

Para actualizar varios documentos en una colección, establezca la opción múltiple en verdadero.

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

multi es opcional. Si se establece en verdadero, actualiza varios documentos que cumplen con los criterios de consulta. Si se establece en falso, actualiza un documento. El valor predeterminado es falso.

db.mycol.find () {"_id": ObjectId (598354878df45ec5), "title": "MongoDB Overview"} {"_id": ObjectId (59835487adf45ec6), "title": "NoSQL Overview"} {"_id": Id. De objeto (59835487adf45ec7), "título": "Descripción general de los puntos de tutoría"}

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

Actualización de documentos incrustados.

Para el siguiente esquema:

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

Actualice las marcas de Tom a 55 donde las marcas son 50 (use el operador posicional $):

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

Para el siguiente esquema:

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

Actualiza las marcas de inglés de Tom a 85:

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

Explicando el ejemplo anterior:

Al usar {name: "Tom", "marks.subject": "English"} obtendrá la posición del objeto en la matriz de marcas, donde el asunto es inglés. En "marcas. $. Marcas", $ se usa para actualizar en esa posición de la matriz de marcas

Actualizar valores en una matriz

El operador $ posicional identifica un elemento en una matriz para actualizar sin especificar explícitamente la posición del elemento en la matriz.

Considere una colección de estudiantes con los siguientes documentos:

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

Para actualizar 80 a 82 en la matriz de calificaciones en el primer documento, use el operador posicional $ si no conoce la posición del elemento en la matriz:

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow