university tutorial example descargar caracteristicas mongodb

example - mongodb tutorial



Actualización de una clave/valor específico dentro de un campo de matriz con MongoDB (1)

Como prefacio, he estado trabajando con MongoDB durante aproximadamente una semana, por lo que esta puede ser una respuesta bastante simple.

Ya tengo datos almacenados en mi colección, llamaremos a este content colección, ya que contiene artículos, noticias, etc. Cada uno de estos articles contiene otra matriz llamada author que contiene toda la información del autor (dirección, teléfono, título, etc.) .

El objetivo : estoy intentando crear una consulta que actualizará la dirección del autor en cada artículo en el que existe el autor específico, y solo el bloque del autor especificado (no otros que existen dentro de la matriz).

Algo así como una "Actualización global" de un artículo específico que afecta su información en cada parte del contenido que existe.

Aquí hay un ejemplo de cómo se ve el content con el author .

{ "_id" : ObjectId("4c1a5a948ead0e4d09010000"), "authors" : [ { "user_id" : null, "slug" : "joe-somebody", "display_name" : "Joe Somebody", "display_title" : "Contributing Writer", "display_company_name" : null, "email" : null, "phone" : null, "fax" : null, "address" : null, "address2" : null, "city" : null, "state" : null, "zip" : null, "country" : null, "image" : null, "url" : null, "blurb" : null }, { "user_id" : null, "slug" : "jane-somebody", "display_name" : "Jane Somebody", "display_title" : "Editor", "display_company_name" : null, "email" : null, "phone" : null, "fax" : null, "address" : null, "address2" : null, "city" : null, "state" : null, "zip" : null, "country" : null, "image" : null, "url" : null, "blurb" : null }, ], "tags" : [ "tag1", "tag2", "tag3" ], "title" : "Title of the Article" }

Puedo encontrar todos los artículos que ha creado este autor ejecutando el siguiente comando:

db.content.find({authors: {$elemMatch: {slug: ''joe-somebody''}}});

Así que, en teoría, debería poder actualizar el registro de authors para la babosa joe-somebody pero no jane-somebody (el segundo autor), simplemente no estoy seguro de cómo llegar y actualizar cada registro para ese autor.

Pensé que estaba en el camino correcto, y esto es lo que he intentado.

b.content.update( {authors: {$elemMatch: {slug: ''joe-somebody''} } }, {$set: {address: ''1234 Avenue Rd.''} }, false, true );

Solo creo que hay algo que me falta en la instrucción $ set para especificar el autor correcto y señalar dentro de la matriz correcta. ¿Algunas ideas?

**Update**

También he intentado esto ahora:

b.content.update( {authors: {$elemMatch: {slug: ''joe-somebody''} } }, {$set: {''authors.$.address'': ''1234 Avenue Rd.''} }, false, true );

Solución:

¡Esto es lo que finalmente me funcionó!

db.content.update({''authors.slug'':''joe-somebody''},{$set:{''authors.$.address'':''Address That I wanted''}},false,true);

Actualiza todos los registros correctamente, gracias!