Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modelamiento de datos con MongoDB

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Modelamiento de datos con MongoDB

Esta presentación tuvo lugar en UIGV por motivo del FESOLI 2012.

Avatar for Jorge Puente-Sarrín

Jorge Puente-Sarrín

October 27, 2012
Tweet

More Decks by Jorge Puente-Sarrín

Other Decks in Programming

Transcript

  1. Operaciones básicas Inserción: db.empleado.insert({"nombre": "Jorge Puente", "email": "[email protected]", "posicion": "Programador"});

    Consulta: db.empleado.find(); db.empleado.find({ "email": /^p/ }); Actualización: db.empleado.update({ "email": "[email protected]" }, { “$set”: { "posicion": "Analista de calidad" } }); db.empleado.update({ "email": "[email protected]" }, { “$set”: { "posicion": "Analista de calidad" } }, false); //upsert parameter db.empleado.update({ "email": "[email protected]" }, { “$set”: { "posicion": "Analista de calidad" } }, false, true); //multi parameter Eliminación: db.empleado.remove({"email": "[email protected]"}); db.empleado.remove();
  2. Herencia Cliente • Nombre • CorreoElectronico • Direccion • FechaRegistro

    Persona Natural • DNI Persona Jurídica • RUC • RazonSocial
  3. Herencia Cliente • Nombre • CorreoElectronico • Direccion • FechaRegistro

    Persona Natural • DNI Persona Jurídica • RUC • RazonSocial
  4. Colección de publicaciones: { "_id": ObjectId("4f9c31753d32831252000000"), "titulo": "Mi primera publicación"

    "slug": "mi-primera-publicacion", "texto": "Esta es mi primera publicación en el blog", "fecha": ISODate("2012-04-28T13:05:41.137Z") } Colección de "likes": { "_id": ObjectId("4f9c31753d32781252000000"), "postid": ObjectId(" 4f9c31753d32831252000000"), "fecha": ISODate("2012-04-28T13:49:33.512Z"), "usuarioid": ObjectId("508bd80e0337da2837a31db5") }, { "_id": ObjectId("4f9c31753d32565465000000"), "postid": ObjectId(" 4f9c31753d32831252000000"), "fecha": ISODate("2012-04-28T13:49:38.719Z"), "usuarioid": ObjectId("508bd81df98a40ca9f779c43") } Documentos vinculados
  5. Documentos embebidos Colección de publicaciones: { "_id": ObjectId("4f9c31753d32831252000000"), "titulo": "Mi

    primera publicación" "slug": "mi-primera-publicacion", "texto": "Esta es mi primera publicación en el blog", "fecha": ISODate("2012-04-28T13:05:41.137Z"), "likes": [ { "fecha": ISODate("2012-04-28T13:49:33.512Z"), "usuarioid": ObjectId("508bd80e0337da2837a31db5") }, { "fecha": ISODate("2012-04-28T13:49:38.719Z"), "usuarioid": ObjectId("508bd81df98a40ca9f779c43") } ] }
  6. Arrays embebidos y arrays de _id • Consulta sobre una

    colección. • $slice es muy útil para consultar partes del array embebido. • Natural e intuitivo. • Dificultad media para operaciones. • Límite de 16MB.
  7. Árbol embebido • Consulta sobre una sola colección. • Natural

    e intuitivo. • Mucha dificultad para operaciones. • Límite de 16MB.
  8. Normalizado • Mayor flexibilidad para el manejo de los datos.

    • Mayor facilidad para operaciones. • Costo en performance para consultas entre colecciones.
  9. Orden ascendente: db.empleado.ensureIndex({email:1}); Orden ascendente y descendente: db.empleado.ensureIndex({email:-1},{unique:true}); Índice disperso,

    se ignora el documentos al poseer el campo: db.empleado.ensureIndex({email:1},{unique:true, sparse:true}); Índice compuesto: db.empleado.ensureIndex({firstname: 1, lastname: 1}, {unique: true}); Índice geoespacial: db.places.ensureIndex( { loc : "2d" } ) Índices
  10. • Schema design is different in MongoDB • Basic data

    design principals stay the same • Focus on how the apps manipulates data • Rapidly evolve schema to meet your requirements • Enjoy your new freedom, use it wisely :-) MongoDB Inc.