Está en la página 1de 10

TALLER MONGODB

PRESENTADO POR:

CARLOS ANDRES COLMENARES SUAREZ

JUAN MANUEL GALVIS CANDELO


DOCENTE

BASE DE DATOS II

CORPORACIÓN UNIVERSITARIA DEL HUILA – CORHUILA


NEIVA-HUILA
2021
Diseño a desarrollar

Enunciado

Se precisa diseñar un blog de noticias donde los usuarios registrados pueden publicar sus
comentarios:

Cada autor tiene un nombre, un nombre de usuario, una cuenta de Twitter y una descripción.
Además, de forma opcional, los usuarios pueden proporcionar como datos su dirección (calle,
número, puerta, torre, # apto, ciudad, código postal) o sus teléfonos de contacto (pueden tener
varios). Las noticias tienen un título, un cuerpo y una fecha de publicación. Son publicadas
por un autor y pueden contener o no, una lista de tags. Las noticias reciben comentarios,
quedando registrado la persona que lo escribió, el comentario escrito y el momento en el que
lo hizo.

Practica a desarrollar

Realizar las siguientes consultas:


● Número de noticias publicadas por usuario.
● 10 últimas noticias publicadas.
● Noticias que no tienen el campo tag.
● Noticias publicadas en un periodo de fechas.
Desarrollo
1. Creación de base de datos:

Comando USE Blog_Noticia1 se crea la base de datos donde se van a almacenar las
colecciones, y con el comando db.createcollections(‘usuario’) se crea la colección usuario y
con el comando db.createcollections(‘noticia’) se crea la colección noticia y con el comando
db.createcollections(‘comentario’)
use Blog_Noticia1,
db.createCollection('usuario');
db.createCollection ('noticia');
db.createCollection ('comentario');

2. Creación de modelo físico con datos insertados con la sentencia : “ db.usuario.insertOne ”

db.usuario.insertOne({nombre_usuario: 'Frank_blog',nombre: 'Frank',cuenta_twitter: 'Frank_USE',descripcion: 'blogger


aficionado',telefono1: '73128989',telefono2: '840932834',direccion: {calle: 'Av. de los Castros',numero: '2256',cp:
'39005',ciudad: 'Santander'}})
db.usuario.insertOne({nombre_usuario: 'Carcol',nombre: 'Carlos',cuenta_twitter: 'Carlos_USE',descripcion: 'blogger
Profesional',telefono1: '12345678',telefono2: '87654321',direccion: {calle: '22 b sur',numero: '34 c 33',cp: '12345',ciudad:
'Neiva'}})
3. Comprobamos la creación de los usuarios con la sentencia:

db.usuario.find().pretty()

4. Creemos a continuación los índices:


• Índice único para los campos nombre_usuario y cuenta_twitter:

db.usuario.createIndex({“nombre_usuario”: 1}, {unique: true})


db.usuario.createIndex({“cuenta_twitter”: 1}, {unique: true})

• Índice para el campo cp (código postal). Lo hacemos sparse para que no se indicen por este
campo aquellos documentos que no lo tengan definido:

db.usuario.createIndex({“cp”: 1}, {sparse: true})

• Varios índices para los teléfonos (tantos como campos haya):

db.usuario.createIndex({“telefono1”: 1})
db.usuario.createIndex({“telefono2”: 1})
5. Se insertan Datos a la tabla noticia

db.noticia.insertOne({titulo:'Primera Noticia',cuerpo:'Protestas colombia 1',fecha:ISODate('2021-05-30'),tags:['a','b'],


nombre_usuario: 'Frank_blog'})
db.noticia.insertOne({titulo:'Segunda Noticia',cuerpo:'Protestas colombia 2',fecha:ISODate('2021-05-31'),tags:[ ],
nombre_usuario: 'Carcol'})
db.noticia.insertOne({titulo:'Tercera Noticia',cuerpo:'Protestas colombia 3',fecha:ISODate('2021-05-30'),tags:['a','b'],
nombre_usuario: 'Frank_blog'})
db.noticia.insertOne({titulo:'Cuarta Noticia',cuerpo:'Protestas colombia 4',fecha:ISODate('2021-05-31'),tags:[ ],
nombre_usuario: 'Carcol'})
db.noticia.insertOne({titulo:'Quinta Noticia',cuerpo:'Protestas colombia 5',fecha:ISODate('2021-05-30'),tags:[ ],
nombre_usuario: 'Frank_blog'})
db.noticia.insertOne({titulo:'Sexta Noticia',cuerpo:'Protestas colombia 6',fecha:ISODate('2021-05-31'),tags:[ ],
nombre_usuario: 'Carcol'})
db.noticia.insertOne({titulo:'Septima Noticia',cuerpo:'Protestas colombia 7',fecha:ISODate('2021-05-30'),tags:[ ],
nombre_usuario: 'Frank_blog'})
db.noticia.insertOne({titulo:'Octava Noticia',cuerpo:'Protestas colombia 8',fecha:ISODate('2021-05-31'),tags:[ ],
nombre_usuario: 'Carcol'})
db.noticia.insertOne({titulo:'Novena Noticia',cuerpo:'Protestas colombia 9',fecha:ISODate('2021-05-30'),tags:[ ],
nombre_usuario: 'Frank_blog'})
db.noticia.insertOne({titulo:'Decima Noticia',cuerpo:'Protestas colombia 10',fecha:ISODate('2021-05-31'),tags:['a','b'],
nombre_usuario: 'Carcol'})
6. Se insertan datos a la tabla comentario

db.comentario.insertOne({fecha:ISODate('2021-05-30'),cuerpo:'buena noticia', nombre_usuario: 'Frank_blog',


titulo:'Primera Noticia'})
db.comentario.insertOne({fecha:ISODate('2021-05-31'),cuerpo:'regular noticia', nombre_usuario: 'Carcol',
titulo:'Segunda Noticia'})
db.comentario.insertOne({fecha:ISODate('2021-05-30'),cuerpo:'mala noticia', nombre_usuario: 'Frank_blog',
titulo:'Tercera Noticia'})

7. Segun la practica a desarrollar “ 10 últimas noticias publicadas. “ implementamos la


sentencia:

db.noticia.find().sort({_id:-1}).limit(10).pretty()
8. Segun la practica a desarrollar “ Número de noticias publicadas por usuario. “
implementamos la sentencia:

db.noticia.find({nombre_usuario:"Frank_blog"}).count()
db.noticia.find({nombre_usuario:"Carcol"}).count()

9. Segun la practica a desarrollar “ Noticias que no tienen el campo tag “ implementamos la


sentencia:

db.noticia.find({tags:[ ]}).pretty()
10. Segun la practica a desarrollar “ Noticias publicadas en un periodo de fechas. “
implementamos la sentencia:

db.noticia.find({fecha:ISODate("2021-05-30")}).pretty()

También podría gustarte