Insertar y extraer data de sub-arreglos

50 views
Skip to first unread message

Ricky Muñoz

unread,
Oct 7, 2014, 3:56:39 PM10/7/14
to mongod...@googlegroups.com
Estimados, este es mi primer post,

Tengo la siguiente colección de ejemplo en donde deseo ser lo más explícito posible:
{
"_id" : ObjectId("54344276cd76dd81ee40b961"),
"user" : "cor...@server.com",
"pass" : "unoporaqui",
"tipo" : "empleado",
"datos" : [
{
"nombre" : "Usuario 1",
"apellido" : "Apellido usuario 1",
"edad" : 27,
"libros" : [ ]
},
{
"nombre" : "Usuario 2",
"apellido" : "Apellido usuario 2",
"edad" : 32,
"libros" : [ ]
},
{
"nombre" : "Usuario 3",
"apellido" : "Apellido usuario 3",
"edad" : 32,
"libros" : [ ]
}
]
}

Sí puedo:
Insertar (e imagino que para extraer es lo mismo) objetos en el documento-array "datos".

No puedo:
Añadir y extraer elementos al/del sub-array libros[]

Les cuento que soy bastante nuevo en MongoDB (una semana y algo más) estoy en un proyecto en MongoDB, PHP y Nodejs, la idea es que tenemos un CMS en PHP y almacenamos Data en Mongo, y con Nodejs los usuarios del sistema pueden interactuar con la misma.

Espero su ayuda amigos y a medida de que avance con esta maravillosa DB compartiré mis conocimientos y avances.

Ricky Muñoz

unread,
Oct 7, 2014, 4:22:56 PM10/7/14
to mongod...@googlegroups.com
Ahh olvidé mencionar que esto lo estoy haciendo desde PHP, usando el siguiente código:

$elemento = array('nombre'=>'Juan', 'apellido'=>'Perez', 'edad'=>20, 'libros'=>array());
//$elemento = array('libro'=>'Un libro 1', 'codigo'=>'asdfasdf134');
$nuevosDatos = array('$push' => array('datos'=>$elemento));
$coleccion->update(array('user'=>'cor...@server3.com'), $nuevosDatos);
//$coleccion->update(array('usuario'=>'cor...@server3.com'), array('$push'=> array('datos'=>array('nombre'=>'Jose', 'apellido'=>'Valdez', 'edad'=>33, 'libros'=>array()))));
echo 'Bien! ';

Ricky Muñoz

unread,
Oct 7, 2014, 4:56:38 PM10/7/14
to mongod...@googlegroups.com
Estimados, ya lo pude resolver, aquí el código:
$coleccion->update(array('user'=>'cor...@server.com', 'datos.nombre'=>'Usuario 1'),
    array('$push'=>array('datos.$.libros'=>array('libro'=>'Libro 1', 'codigo'=>md5('asdfasdf134')))));



Para quien le sirva. 

Saludos.

Ricky Muñoz

unread,
Oct 7, 2014, 4:59:30 PM10/7/14
to mongod...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages