You are on page 1of 38

Taller COMPDES 2014 Da 1

"Conectando MongoDB con


ASP .Net"





Jonnathan Bartly Monge
(jbartly2011@gmail.com)
Walter Chavarra Mora
(wchavarria03@gmail.com)
Josu Murillo Len
(josue.murillo.leon@gmail.com)






Colaboradora: Prof. Marlen Trevio Villalobos (marlentrevi@gmail.com)
Enlace de Presentacin: https://slidebean.com/p/aJjnRqB1Ea/MongoDB
Primero Creamos la Base de datos
use bookshelf
switched to db bookshelf

Creacin de colecciones
Primero se crea la coleccin:
db.createCollection(books)
{ ok: 1 }
db.createCollection(magazines)
{ ok: 1 }

Insertar un documento en la base de datos anterior:
Se puede indicar una clave nica (Opcional): (si se indica debe usar un id distinto en cada insercin)
db.books.ensureIndex({idBook:1},{unique: true})

Se crea un documento:
medieval = {name:Game of Thrones,qty:10,price:19000}
{ name: Game of Thrones, qty:10, price:19000 }
Luego lo insertamos el documento en una coleccin: (Este comando si no existe la coleccin la
crea)
db.books.insert(medieval)

db.books.insert({name:Crepusculo,qty:11, price:9000})

db.books.insert({name:Crepusculo,qty:10, price:9000})

Se pueden hacer inserciones mltiples:
db.books.insert(*{name:Game of Thrones 2,qty:5, price:20000},{name:Game of
Thrones 3,qty:5, price:22000}])



Bsquedas en documentos:
Se busca el libro con el nombre respectivo
db.books.find({name:Game of Thrones})
{ _id: ObjectId(539083d56ca7450eb139e92d), name: Game of Thrones, qty:10,
price:19000}
Se puede obtener los libros con cantidad menor a 8.
db.books.find( {qty:{$lt:8}} )
{ _id: ObjectId(539083d56ca7450eb139e990), name: Game of Thrones 2, qty:5,
price:20000}
{ _id: ObjectId(539083d56ca7450eb139e991), name: Game of Thrones 3, qty:5,
price:22000}

Modificar Documentos
Se puede modificar la informacin en un documento, se selecciona el libro por nombre y se
modifica la cantidad.
db.books.update({name:Game of Thrones 3},{qty:7})

Se pueden incrementar el valor de los datos numricos, en este caso se incrementa la cantidad
en 7 unidades.
db.books.update({name:Game of Thrones 3},{$inc:{qty:7}})

Se pueden incrementar varios valores de datos numricos en un mismo query, en este caso se
incrementa la cantidad en 7 y se le resta 2000 al precio.
db.books.update({name:Game of Thrones 3},$inc:{qty:7,price:-2000})

Se pueden incrementar varios valores de datos numricos en un mismo query, de varios
documentos, al activr el multi:true lo que se hace es incrementar la cantidad en 7 de todos los
documentos que cumplan con el criterio de bsqueda y no solo del primero como
normalmente se hara.
db.books.update({name:Game of Thrones 3},{$inc:{qty:7},{multi:true})

Agregar un campo a un documento, se le agrega el campo type:Medieval al documento que
cumpla con la condicin.
db.books.update({name:Game of Thrones 3},{$set:{ type:Medieval}})

Eliminar un campo en un documento, se elimina el campo type del documento seleccionado.
db.books.update({name:Game of Thrones 3},$unset:{ type:Medieval})



Eliminar una coleccin
Se puede eliminar la coleccin sin importar su contenido
db.magazines.drop()
true

Eliminar Documento
Se puede eliminar el documento sin importar su contenido
db.books.remove({name:Crepusculo})












Tablas Comandos:
Comando Ejemplo Funcin Nota
Base de Datos
show dbs show dbs Muestra las bases de datos
existentes de manera fsica.
Si la base de datos
no contiene
informacin la
misma no se
mostrara, por
default podemos
encontrar local.
db db Indica en cual base de datos
se encuentra trabajando
actualmente.
Si se est iniciando
mongo por default
nos indicara la base
de datos test.
db.dropDatabase() db.dropDatabase() Elimina la base de datos en
la que se encuentra
trabajando.

db.copyDatabase(old_name, new
name)
db.copyDatabase(bookshl
f,bookshelf)
Para copiar o renombrar la
base de datos. Primero se
indica el nombre de la base
existente y luego el nombre
del destino de la copia.
Cuando lo que se
quiere es
renombrar, despus
de realizar esto se
debe borrar la base
de datos anterior.
use use bookshelf Utilizamos la base de datos
indicada, si no existe se
crea.
Si no se le agrega
nada a la base de
datos esta no se
almacenara
fsicamente.










Comando Ejemplo Funcin Nota
Colecciones
- show collections
- show tables


- show collections
- show tables
Muestra la lista de
colecciones en la base de
datos actual.
Si no existen
colecciones el
comando no
devolver ninguna
respuesta. La
coleccin
System.indexes
mantiene los ndices
de todas las
colecciones.
db.createCollection(name,{options}
)
db.createCollection(books
)
Crea la coleccin con el
nombre indicado, en las
opciones se puede
indicar, tamao en disco
fsico y cantidad mxima
de documentos.
Si se indica el
nombre de una
existente devolver
un mensaje de error
indicando que ya
existe el nombre.



db.oldName.renameCollection(new
Name)
db.book.renameCollection(
books)
Renombra la coleccin,
cuenta con opciones para
borrar la coleccin
anterior o mantenerla,
por default la elimina.
Si se indica el mismo
nombre dar error
porque detectara
una coleccin
existente con ese
nombre.
db.name.drop() db.books.drop() Elimina la coleccin
completa.
Si la eliminar
devuelve true, si no
lo hace devuelve
falso.









Comando Ejemplo Funcin Nota
Documentos
db.collection.ensureIndex(
{id:1}
,{unique:true}
)
db.books.ensureIndex(
{idBook:1}
,{unique:true}
)
Crea un valor nico en los
documentos que se
quieran insertar a la
coleccin.
No hace que sea
obligatorio el
campo, pero si
nico. No aplica
para los sub
documentos.
db.collection.insert( { name:info
})

db.inventory.insert(
{ _id: 10, type: "misc",
item:
"card", qty: 15 }
)

Inserta en la coleccin el
documento indicado.
Puede contener
sub documentos,
y el id se le
agrega por
defecto si no se le
indica uno.
db.collection.insert(
[
{ _id: 20, item: "item1", qty:
50, type: "desk" },
{ _id: 21, item: "item2", qty:
20, type: "floor" },
{ _id: 22, item: "item3", qty:
100 }
]
)
db.books.insert(
[
{ _id: 20, name:
"GoT1", qty:
10},
{ _id: 21, item:
"item2", qty:
20, type: "floor" },
{ _id: 22, item:
"item3", qty:
100 }
]
)
Se realiza la insercin de
varios documentos a la vez.


db.collection.find() db.books.find() Devuelve un listado con
todos los documentos y la
informacin que contiene.
Si no contiene
nada, no
devuelve ninguna
respuesta.









Comando Ejemplo Funcin Nota
Documentos
db.collection.find({name:info}) db.books.find(
{name:Game of
Thrones}
)
Obtiene todos los
documentos que tengan
la informacion exacta
indicada.

db.books.find(
{name:Game of
Thrones}
).limit(3)
Devuelve nicamente los
primeros 3 resultados.
Si hay menos
resultados de los
indicados
nicamente
devuelve los que
encuentre.
db.books.findOne({name:
Game of Thrones})
Devuelve el primer
resultado que encuentre,
un nico resultado.

db.collection.find(
{item}:{$lt:42}),
{item2:0,_id:0}
)
db.books.find(
{idBook}:{$lt:42}),
{name:0,_id:0}
)
Devuelve los documentos
con el idBook mientras
sea menor a 42, y no
muestra el nombre ni el
_id.


db.books.update(
{ item: "Divine Comedy" },
{
$inc: { stock: 5 }
}
)


db.products.update( { sku:
"abc123" },
{ $inc:
{ quantity: -2, sales: 2 } } )
db.products.update(
{ _id: 1 },
{ $mul: { price:
1.25 } }
)


db.books.update(
{ _id: 11 },
{ $set:
{ stock: 1 }
}
)


Agrega el campo stock a
documento.


Comando Ejemplo Funcin Nota
Documentos
db.books.update( { _id:
11 }, { $unset: { stock:
1 } },{multi:true} )
Remueve el campo
estock del arreglo.
Multi es la propiedad de
aplicrselo a varios datos al
azar.
db.students.update( { _id:
1 }, { $rename: { "nmae":
"name" } } )
Cambia el nombre de un
tem en un documento.

db.students.update( { _id:
1 }, { $rename:
{ "name.first":
"name.fname" } } )
Cambia el nombre de un
tem en un sub
documento.

db.scores.update(
{ _id: 1 },
{ $max:
{ highScore: 950 }
}
)
Si la mxima cantidad
encontrada es menor a
la indicada entonces se
reemplaza por esta
indicada.

db.scores.update(
{ _id: 1 },
{ $min:
{ lowScore: 150 }
}
)
Si la mnima cantidad
encontrada es mayor a la
indicada entonces se
reemplaza por esta
indicada.

db.collection.save({}) db.products.save( { _id:
100, item: "water", qty:
30 } )
Si el id indicado no existe
funciona como un insert,
si existe entonces
reemplaza todo el
documento por la
informacin que se le
provee.

db.collection.remove({}) db.books.remove({info:}) Elimina el documento
que cumpla con la
condicin de bsqueda.
Retorna false si no se puede
borrar y true si se borr.









Taller COMPDES 2014 Da 2,3
"Conectando MongoDB con
ASP .Net"





Jonnathan Bartly Monge
(jbartly2011@gmail.com)
Walter Chavarra Mora
(wchavarria03@gmail.com)
Josu Murillo Len
(josue.murillo.leon@gmail.com)










Colaboradora: Prof. Marlen Trevio Villalobos (marlentrevi@gmail.com)
Definicio n de Problema

Una empresa de nombre Coopatrac R.L brinda servicios de transporte pblico
especializado en autobuses. Para tener un control de su flota y personal de recurso humano lleva
un registro manual en un cuaderno donde anota la ruta que un autobs recorrer, el nombre del
bus y el nombre del chofer encargado de conducir el autobs.

Recientemente tuvieron problemas con el registro ya que se perdi el cuaderno de
anotaciones. Por esta razn Coopatrac R.L quiere una aplicacin web que le permita llevar el
registro de choferes, autobuses y rutas. Tambin pidi de requisito que la aplicacin sea rpida en
la insercin y acceso a los datos.

Creando la base de Datos
use compdes2014

db.createCollection("choferes")
db.createCollection("buses")
db.createCollection("rutas")
db.createCollection("comborutas")


db.choferes.insert({nombre:"Jorge", apellidos:"Rojas Jimenez", cedula:"207120658",
telefono: "8965-9865", direccion:"Alajuela, Grecia", anos_experiencia:8})

db.buses.insert({marca:"Mercedes Benz", modelo:"N2007", n_placa:"JSG 025",
capacidad: 89, estado:"Disponible", descripcion:"Color blanco con negro"})

db.comborutas.insert({ruta:"Ciudad Quesada-Florencia"})
db.comborutas.insert({ruta:"Ciudad Quesada-Fortuna"})

db.rutas.insert({ruta:" Ciudad Quesada-Florencia ", chofer:"Jorge", bus:" Mercedes
Benz ", salida_deposito: "05:30 am", entrada_deposito:"09:40 pm", tiempo_viaje:"30
min"})

La siguiente gua pretende facilitar a los usuarios un mejor y ms rpido aprendizaje
respecto al uso de MongoDB siendo consumido por una aplicacin web en ASP .Net.

La aplicacin consiste en la administracin rutinaria de las rutas laborales de autobuses. Se
deben registrar rutas y los choferes y buses que se utilizarn para cada ruta laboral.

Iniciemos:

1. En primer lugar se debe crear un nuevo proyecto Web vaco, se le da nombre y la
direccin donde se guardar el proyecto en la PC.


2. Una vez se haya generado el proyecto nuevo, se abre el archivo Web.config y se le agrega
las siguientes lneas de cdigo, las cuales son para realizar la coneccin a la base de datos:

<appSettings>
<add key="connectionString" value="Server=localhost:27017"/>
</appSettings>



3. Para poder hacer uso de las funcionalidades mongo dentro del proyecto se debe instalar el
paquete mongocsharpdriver, se abre la pestaa de Herramientas en el men principal,
luego al Administrador de Libreras de Paquete y se selecciona la Consola de
Administracin de Paquetes:


En la Consola de Administracin de Paquetes se escribe el siguiente comando:
Install-Package mongocsharpdriver


4. Para un mayor orden del proyecto se recomienda el uso de carpetas para la divisin de
archivos. Los archivos que se necesitarn son:
bll.cs (para la lgica de negocio).
ddl.cs (para realizar los mtodos referentes a la base de datos).
clsInfoBuses.cs (clase con la estructura de la coleccin de buses).
clsInfoChoferes.cs (clase con la estructura de la coleccin de choferes).
clsInfoComboRutas.cs (clase con la estructura de la coleccin de rutas fsicas).
clsInfoRutas.cs (clase con la estructura de la coleccin de rutas laborales).
vBuses.aspx (interfaz grfica para la funcionalidad de la lgica de buses).
vChoferes.aspx (interfaz grfica para la funcionalidad de la lgica de choferes).
vRutas.aspx (interfaz grfica para la funcionalidad de la lgica de rutas laborales).


5. Para la vista de choferes se necesita los siguientes componentes:


6. Para la vista de buses se necesita los siguientes componentes:


7. Para la vista de rutas se necesita los siguientes componentes:


8. La clase de clsInfoChoferes.cs tiene la siguiente estructura:
public ObjectId _id { get; set; }
public string nombre { get; set; }
public string apellidos { get; set; }
public string cedula { get; set; }
public string telefono { get; set; }
public string direccion { get; set; }
public int anos_experiencia { get; set; }
Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.


9. La clase de clsInfoBuses.cs tiene la siguiente estructura:
public ObjectId _id { get; set; }
public string marca { get; set; }
public string modelo { get; set; }
public string n_placa { get; set; }
public int capacidad { get; set; }
public string estado { get; set; }
public string descripcion { get; set; }
Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.


10. La clase de clsInfoComboRutas.cs tiene la siguiente estructura:
public ObjectId _id { get; set; }
public string ruta { get; set; }
Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.


11. La clase de clsInfoRutas.cs tiene la siguiente estructura:
public ObjectId _id { get; set; }
public string ruta { get; set; }
public string chofer { get; set; }
public string bus { get; set; }
public string salida_deposito { get; set; }
public string entrada_deposito { get; set; }
public string tiempo_viaje { get; set; }
Adems, se debe llamar al using MongoDB.Bson; en la parte superior del archivo.

12. En el archivo dll.cs se mantienen los mtodos respectivos para el funcionamiento de la
base de datos. En primer lugar est el mtodo que establece la conexin a MongoDB y
devuelve la base de datos respectiva.
/// <summary>
/// Establece conexin a la base de datos.
/// </summary>
/// <param name="db">Nombre de la base de datos</param>
/// <returns></returns>
public MongoDatabase conn(string db)
{
MongoServer server =
MongoServer.Create(ConfigurationManager.AppSettings["connectionString
"]);
MongoDatabase myDB = server.GetDatabase(db);
return myDB;
}
13. Los siguientes mtodos son para la obtencin de los distintos documentos en la base de
datos:
/// <summary>
/// Obtiene todos los choferes de la coleccin.
/// </summary>
/// <returns></returns>
public List<clsInfoChoferes> _Lista_Choferes()
{
MongoDatabase myDatabase = conn("compdes2014");
List<clsInfoChoferes> list = new List<clsInfoChoferes>();
MongoCollection<clsInfoChoferes> collection =
myDatabase.GetCollection<clsInfoChoferes>("choferes");
return collection.FindAll().ToList<clsInfoChoferes>();
}

/// <summary>
/// Obtiene todos los buses de la coleccin.
/// </summary>
/// <returns></returns>
public List<clsInfoBuses> _Lista_Buses()
{
MongoDatabase myDatabase = conn("compdes2014");
List<clsInfoBuses> list = new List<clsInfoBuses>();
MongoCollection<clsInfoBuses> collection =
myDatabase.GetCollection<clsInfoBuses>("buses");
return collection.FindAll().ToList<clsInfoBuses>();
}

/// <summary>
/// Obtiene todos las rutas de la coleccin dependiendo de la categoria.
/// </summary>
/// <param name="categoria">Tipo de restriccin para hallar los documentos</param>
/// <param name="consulta">Restriccin para hallar los documentos</param>
/// <returns></returns>
public List<clsInfoRutas> _Lista_Rutas(string categoria, string consulta)
{
MongoDatabase myDatabase = conn("compdes2014");
List<clsInfoRutas> list = new List<clsInfoRutas>();
MongoCollection<clsInfoRutas> collection =
myDatabase.GetCollection<clsInfoRutas>("rutas");
if (categoria == "todos") {
foreach (clsInfoRutas documento in collection.FindAll())
{
list.Add(documento);
}
return list;
}

foreach (clsInfoRutas documento in collection.Find(Query.EQ(categoria,
consulta)))
{
list.Add(documento);
}
return list;
}
14. Los siguientes mtodos son para la insercin de los distintos documentos en la base de
datos:
/// <summary>
/// Inserta chofer en la base de datos.
/// </summary>
/// <param name="nombre">Nombre</param>
/// <param name="apellidos">Apellidos</param>
/// <param name="cedula">Cedula</param>
/// <param name="telefono">Telefono</param>
/// <param name="direccion">Direccion</param>
/// <param name="anos_experiencia">Aos Experiencia</param>
public void _insertarChofer(string nombre, string apellidos, string cedula,
string telefono, string direccion, int anos_experiencia) {
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoChoferes> document =
myDatabase.GetCollection<clsInfoChoferes>("choferes");
BsonDocument chofer = new BsonDocument {
{"nombre",nombre},
{"apellidos",apellidos},
{"cedula",cedula},
{"telefono",telefono},
{"direccion",direccion},
{"anos_experiencia",anos_experiencia}
};
document.Insert(chofer);
}

/// <summary>
/// Inserta bus en la base de datos
/// </summary>
/// <param name="marca">Marca</param>
/// <param name="modelo">Modelo</param>
/// <param name="n_placa">N de Placa</param>
/// <param name="capacidad">Capacidad</param>
/// <param name="estado">Estado</param>
/// <param name="descripcion">Direccin</param>
public void _insertarBus(string marca, string modelo, string n_placa, int
capacidad, string estado, string descripcion)
{
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoBuses> document =
myDatabase.GetCollection<clsInfoBuses>("buses");
BsonDocument bus = new BsonDocument {
{"marca",marca},
{"modelo",modelo},
{"n_placa",n_placa},
{"capacidad",capacidad},
{"estado",estado},
{"descripcion",descripcion}
};
document.Insert(bus);
}

/// <summary>
/// Inserta ruta en la base de datos
/// </summary>
/// <param name="ruta">Nombre de ruta</param>
/// <param name="chofer">Nombre de chofer</param>
/// <param name="bus">Marca de bus</param>
/// <param name="salida_deposito">Hora salida deposito</param>
/// <param name="entrada_deposito">Hora entrada deposito</param>
/// <param name="tiempo_viaje">Tiempo aproximado de viaje</param>
public void _insertarRuta(string ruta, string chofer, string bus, string
salida_deposito, string entrada_deposito, string tiempo_viaje)
{
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoRutas> document =
myDatabase.GetCollection<clsInfoRutas>("rutas");
BsonDocument rutas = new BsonDocument {
{"ruta",ruta},
{"chofer",chofer},
{"bus",bus},
{"salida_deposito",salida_deposito},
{"entrada_deposito",entrada_deposito},
{"tiempo_viaje",tiempo_viaje}
};
document.Insert(rutas);
}

15. Los siguientes mtodos son para la modificacin de los distintos documentos en la base de
datos:
/// <summary>
/// Modifica chofer en la base de datos
/// </summary>
/// <param name="_id">ID del chofer a modificar</param>
/// <param name="nombre">Nombre</param>
/// <param name="apellidos">Apellidos</param>
/// <param name="cedula">Cedula</param>
/// <param name="telefono">Telefono</param>
/// <param name="direccion">Direccion</param>
/// <param name="anos_experiencia">Aos de Experiencia</param>
public void _modificarChofer(ObjectId _id, string nombre, string apellidos,
string cedula, string telefono, string direccion, int anos_experiencia)
{
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoChoferes> chofer =
myDatabase.GetCollection<clsInfoChoferes>("choferes");
IMongoQuery query = Query.EQ("_id", _id);
IMongoUpdate update = MongoDB.Driver.Builders.Update.Set("nombre", nombre)
.Set("apellidos", apellidos)
.Set("cedula", cedula)
.Set("telefono", telefono)
.Set("direccion", direccion)
.Set("anos_experiencia", anos_experiencia);
chofer.Update(query, update);
}

/// <summary>
/// Modifica bus en la base de datos
/// </summary>
/// <param name="_id">ID del bus a modificar</param>
/// <param name="marca">Marca</param>
/// <param name="modelo">Modelo</param>
/// <param name="n_placa">N de Placa</param>
/// <param name="capacidad">Capacidad</param>
/// <param name="estado">Estado</param>
/// <param name="descripcion">Descripcion</param>
public void _modificarBus(ObjectId _id, string marca, string modelo, string
n_placa, int capacidad, string estado, string descripcion)
{
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoChoferes> bus =
myDatabase.GetCollection<clsInfoChoferes>("buses");
IMongoQuery query = Query.EQ("_id", _id);
IMongoUpdate update = MongoDB.Driver.Builders.Update.Set("marca", marca)
.Set("modelo", modelo)
.Set("n_placa", n_placa)
.Set("capacidad", capacidad)
.Set("estado", estado)
.Set("descripcion", descripcion);
bus.Update(query, update);
}

/// <summary>
/// Modifica ruta en la base de datos
/// </summary>
/// <param name="_id">ID de ruta a modificar</param>
/// <param name="ruta">Nombre de ruta</param>
/// <param name="chofer">Nombre de chofer</param>
/// <param name="bus">Marca de bus</param>
/// <param name="salida_deposito">Hora salida deposito</param>
/// <param name="entrada_deposito">Hora entrada deposito</param>
/// <param name="tiempo_viaje">Tiempo aproximado de viaje</param>
public void _modificarRuta(ObjectId _id, string ruta, string chofer, string bus,
string salida_deposito, string entrada_deposito, string tiempo_viaje)
{
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoRutas> rutas =
myDatabase.GetCollection<clsInfoRutas>("rutas");
IMongoQuery query = Query.EQ("_id", _id);
IMongoUpdate update = MongoDB.Driver.Builders.Update.Set("ruta", ruta)
.Set("chofer", chofer)
.Set("bus", bus)
.Set("salida_deposito", salida_deposito)
.Set("entrada_deposito", entrada_deposito)
.Set("tiempo_viaje", tiempo_viaje);
rutas.Update(query, update);
}

16. Los siguientes mtodos son para la eliminacin de los distintos documentos en la base de
datos:
/// <summary>
/// Elimina chofer de la base de datos
/// </summary>
/// <param name="_id">ID del chofer a eliminar</param>

public void _eliminarChofer(ObjectId _id) {
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoChoferes> chofer =
myDatabase.GetCollection<clsInfoChoferes>("choferes");
IMongoQuery query = Query.EQ("_id", _id);
chofer.Remove(query);
}

/// <summary>
/// Elimina bus de la base de datos
/// </summary>
/// <param name="_id">ID del bus a eliminar</param>
public void _eliminarBus(ObjectId _id)
{
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoChoferes> bus =
myDatabase.GetCollection<clsInfoChoferes>("buses");
IMongoQuery query = Query.EQ("_id", _id);
bus.Remove(query);
}

/// <summary>
/// Elimina ruta de la base de datos
/// </summary>
/// <param name="_id">ID de ruta a eliminar</param>
public void _eliminarRuta(ObjectId _id)
{
MongoDatabase myDatabase = conn("compdes2014");
MongoCollection<clsInfoRutas> rutas =
myDatabase.GetCollection<clsInfoRutas>("rutas");
IMongoQuery query = Query.EQ("_id", _id);
rutas.Remove(query);
}

17. El siguiente mtodo obtiene los documentos de la coleccin que almacena las rutas fsicas
que debe recorrer un autobs, esos documentos son para el DropDownList de Rutas.
/// <summary>
/// Obtiene una lista con el nombre de todas las rutas.
/// </summary>
/// <returns></returns>
public List<clsInfoComboRutas> _obtenerComboRutas()
{
MongoDatabase myDatabase = conn("compdes2014");
List<clsInfoComboRutas> list = new List<clsInfoComboRutas>();
MongoCollection<clsInfoComboRutas> collection =
myDatabase.GetCollection<clsInfoComboRutas>("comborutas");
return collection.FindAll().ToList<clsInfoComboRutas>();
}

18. Se debe realizar las referencias a:
using MongoDB_COMPDES_2014.Utilerias;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using MongoDB.Bson;



19. En el archivo bll.cs se mantienen los mtodos respectivos para el funcionamiento de la
base de datos. En primer lugar est el mtodo que convierte una estructura tipo List a una
estructura tipo DataTable.
/// <summary>
/// Lista de datos a convertir en DataTable
/// </summary>
/// <typeparam name="T">Tipo de lista</typeparam>
/// <param name="items">Lista</param>
/// <returns></returns>
public DataTable _ToDataTable<T>(List<T> items)
{
DataTable dataTable = new DataTable(typeof(T).Name);
PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public |
BindingFlags.Instance);
foreach (PropertyInfo prop in Props)
{
dataTable.Columns.Add(prop.Name);
}
foreach (T item in items)
{
var values = new object[Props.Length];
for (int i = 0; i < Props.Length; i++)
{
values[i] = Props[i].GetValue(item, null);
}
dataTable.Rows.Add(values);
}
return dataTable;
}


20. Los siguientes mtodos son para la obtencin de los distintos documentos de la dll:
/// <summary>
/// Consulta la lista de choferes a partir de la ddl
/// </summary>
/// <returns></returns>
public DataTable _consultarChoferes()
{
List<clsInfoChoferes> list = odll._Lista_Choferes();
return _ToDataTable(list);
}

/// <summary>
/// Consulta la lista de buses a partir de la ddl
/// </summary>
/// <returns></returns>
public DataTable _consultarBuses()
{
List<clsInfoBuses> list = odll._Lista_Buses();
return _ToDataTable(list);
}

/// <summary>
/// Consulta la lista de rutas a partir de la ddl
/// </summary>
/// <param name="_categoria">Categoria de busqueda</param>
/// <param name="consulta">Parametro de busqueda</param>
/// <returns></returns>
public DataTable _consultarRutas(string _categoria, string consulta)
{
string categoria = _categoria.ToLower();
List<clsInfoRutas> list = odll._Lista_Rutas(categoria, consulta);
return _ToDataTable(list);
}

21. Los siguientes mtodos son para la insercin de los distintos documentos hacia la dll:
/// <summary>
/// Inserta choferes a la base de datos a partir de la dll
/// </summary>
/// <param name="nombre">Nombre</param>
/// <param name="apellidos">Apellidos</param>
/// <param name="cedula">Cedula</param>
/// <param name="telefono">Telefono</param>
/// <param name="direccion">Direccion</param>
/// <param name="anos_experiencia">Aos de Experiencia</param>
public void _insertarChofer(string nombre, string apellidos, string cedula,
string telefono, string direccion, int anos_experiencia)
{
odll._insertarChofer(nombre, apellidos, cedula, telefono, direccion,
anos_experiencia);
}

/// <summary>
/// Inserta buses a la base de datos a partir de la dll


/// </summary>
/// <param name="marca">Marca</param>
/// <param name="modelo">Modelo</param>
/// <param name="n_placa">N de Placa</param>
/// <param name="capacidad">Capacidad</param>
/// <param name="estado">Estado</param>
/// <param name="descripcion">Descripcion</param>
public void _insertarBus(string marca, string modelo, string n_placa, int
capacidad, string estado, string descripcion)
{
odll._insertarBus(marca, modelo, n_placa, capacidad, estado, descripcion);
}

/// <summary>
/// Inserta rutas a la base de datos a partir de la dll
/// </summary>
/// <param name="ruta">Nombre de la ruta</param>
/// <param name="chofer">Nombre del chofer</param>
/// <param name="bus">Nombre del bus</param>
/// <param name="salida_deposito">Hora salida deposito</param>
/// <param name="entrada_deposito">Hora entrada deposito</param>
/// <param name="tiempo_viaje">Tiempo aproximado de viaje</param>
public void _insertarRuta(string ruta, string chofer, string bus, string
salida_deposito, string entrada_deposito, string tiempo_viaje)
{
odll._insertarRuta(ruta, chofer, bus, salida_deposito, entrada_deposito,
tiempo_viaje);
}

22. Los siguientes mtodos son para la modificacin de los distintos documentos hacia la dll:
/// <summary>
/// Modifica choferes en la base de datos a partir de la dll
/// </summary>
/// <param name="_id">ID del chofer a modificar</param>
/// <param name="nombre">Nombre</param>
/// <param name="apellidos">Apellidos</param>
/// <param name="cedula">Cedula</param>
/// <param name="telefono">Telefono</param>
/// <param name="direccion">Direccion</param>
/// <param name="anos_experiencia">Aos de Experiencia</param>
public void _modificarChofer(string _id, string nombre, string apellidos, string
cedula, string telefono, string direccion, int anos_experiencia)
{
odll._modificarChofer(ObjectId.Parse(_id), nombre, apellidos, cedula,
telefono, direccion, anos_experiencia);
}

/// <summary>
/// Modifica buses en la base de datos a partir de la dll
/// </summary>
/// <param name="_id">ID del bus a modificar</param>
/// <param name="marca">Marca</param>
/// <param name="modelo">Modelo</param>
/// <param name="n_placa">N de Placa</param>
/// <param name="capacidad">Capacidad</param>
/// <param name="estado">Estado</param>
/// <param name="descripcion">Descripcion</param>
public void _modificarBus(string _id, string marca, string modelo, string
n_placa, int capacidad, string estado, string descripcion)
{
odll._modificarBus(ObjectId.Parse(_id), marca, modelo, n_placa, capacidad,
estado, descripcion);
}

/// <summary>
/// Modifica rutas en la base de datos a partir de la dll
/// </summary>
/// <param name="_id">ID de la ruta a modificar</param>
/// <param name="ruta">Nombre de la ruta</param>
/// <param name="chofer">Nombre del chofer</param>
/// <param name="bus">Nombre del bus</param>
/// <param name="salida_deposito">Hora salida deposito</param>
/// <param name="entrada_deposito">Hora entrada deposito</param>
/// <param name="tiempo_viaje">Tiempo aproximado de voaje</param>
public void _modificarRuta(string _id, string ruta, string chofer, string bus,
string salida_deposito, string entrada_deposito, string tiempo_viaje)
{
odll._modificarRuta(ObjectId.Parse(_id), ruta, chofer, bus, salida_deposito,
entrada_deposito, tiempo_viaje);
}

23. Los siguientes mtodos son para la eliminacin de los distintos documentos hacia la dll:
/// <summary>
/// Elimina choferes de la base de datos a partir de la dll
/// </summary>
/// <param name="_id">ID del chofer a eliminar</param>
public void _eliminarChofer(string _id) {
odll._eliminarChofer(ObjectId.Parse(_id));
}

/// <summary>
/// Elimina buses de la base de datos a partir de la dll
/// </summary>
/// <param name="_id">ID del bus a eliminar</param>
public void _eliminarBus(string _id)
{
odll._eliminarBus(ObjectId.Parse(_id));
}

/// <summary>
/// Elimina rutas de la base de datos a partir de la dll
/// </summary>
/// <param name="_id">ID de la ruta a eliminar</param>
public void _eliminarRuta(string _id)
{
odll._eliminarRuta(ObjectId.Parse(_id));
}

24. El siguiente mtodo recibe de la dll los documentos de la coleccin que almacena las rutas
fsicas que debe recorrer un autobs, esos documentos son para el DropDownList de
Rutas:
/// <summary>
/// Consulta la lista con el nombre de todas las rutas a aprtir de la dll.
/// </summary>
/// <returns></returns>
public DataTable _cargaComboRutas() {
List<clsInfoComboRutas> list = odll._obtenerComboRutas();
return _ToDataTable(list);
}

25. Se debe realizar las referencias a:
using MongoDB_COMPDES_2014.DAL;
using MongoDB_COMPDES_2014.Utilerias;
using MongoDB.Bson;

Adems, antes de todos los mtodos se debe inicializar la clase dll.cs:
dll odll = new dll();

26. En el archivo vBuses.aspx.cs se debe llamar a los mtodos de la bll:
bll obll = new bll();
static string ID_Modificar = "";
static DataTable tempTable = new DataTable();

protected void Page_Load(object sender, EventArgs e)
{
tempTable = obll._consultarBuses();
gdrBuses.DataSource = tempTable;
gdrBuses.DataBind();

}

/// <summary>
/// Llama a la ventana de choferes
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnChoferesBuses_Click(object sender, EventArgs e)
{
Response.Redirect("vChoferes.aspx");
}

/// <summary>
/// Llama a la ventana de rutas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnRutasBuses_Click(object sender, EventArgs e)
{
Response.Redirect("vRutas.aspx");
}

/// <summary>
/// Inserta la informacin de los buses
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnInsertarBuses_Click(object sender, EventArgs e)
{
string marca = txtMarca.Text.ToString();
string modelo = txtModelo.Text.ToString();
string n_placa = txtN_Placa.Text.ToString();
int capacidad = Int16.Parse(txtCapacidad.Text.ToString());
string estado = ddlEstado.SelectedValue.ToString();
string descripcion = txtDescripcion.Text.ToString();

obll._insertarBus(marca, modelo, n_placa, capacidad, estado, descripcion);
tempTable = obll._consultarBuses();
gdrBuses.DataSource = tempTable;
gdrBuses.DataBind();

txtMarca.Text = string.Empty;
txtModelo.Text = string.Empty;
txtN_Placa.Text = string.Empty;
txtCapacidad.Text = string.Empty;
txtDescripcion.Text = string.Empty;
}

/// <summary>
/// Selecciona la fila del gridview
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdrBuses_SelectedIndexChanged(object sender, EventArgs e)
{
int bus = gdrBuses.SelectedRow.RowIndex;
ID_Modificar = tempTable.Rows[bus][0].ToString();
txtMarca.Text = gdrBuses.SelectedRow.Cells[2].Text;
txtModelo.Text = gdrBuses.SelectedRow.Cells[3].Text;
txtN_Placa.Text = gdrBuses.SelectedRow.Cells[4].Text;
txtCapacidad.Text = gdrBuses.SelectedRow.Cells[5].Text;
ddlEstado.SelectedValue = gdrBuses.SelectedRow.Cells[6].Text;
txtDescripcion.Text = gdrBuses.SelectedRow.Cells[7].Text;
txtMarca.Enabled = false;
}

/// <summary>
/// Inserta la informacin de los buses
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnModificarBuses_Click(object sender, EventArgs e)
{
string marca = txtMarca.Text.ToString();
string modelo = txtModelo.Text.ToString();
string n_placa = txtN_Placa.Text.ToString();
int capacidad = Int16.Parse(txtCapacidad.Text.ToString());
string estado = ddlEstado.SelectedValue.ToString();
string descripcion = txtDescripcion.Text.ToString();

obll._modificarBus(ID_Modificar, marca, modelo, n_placa, capacidad, estado,
descripcion);
tempTable = obll._consultarBuses();
gdrBuses.DataSource = tempTable;
gdrBuses.DataBind();

txtMarca.Text = string.Empty;
txtModelo.Text = string.Empty;
txtN_Placa.Text = string.Empty;
txtCapacidad.Text = string.Empty;
txtDescripcion.Text = string.Empty;
txtMarca.Enabled = true;
}

/// <summary>
/// Elimina la informacin de los buses
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdrBuses_RowDeleting(object sender, GridViewDeleteEventArgs e){}
protected void gdrBuses_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int index = Convert.ToInt32(e.CommandArgument);
string _id = tempTable.Rows[index][0].ToString();

obll._eliminarBus(_id);
tempTable = obll._consultarBuses();
gdrBuses.DataSource = tempTable;
gdrBuses.DataBind();
}
}
protected void btnLimpiarBuses_Click(object sender, EventArgs e)
{
txtMarca.Text = string.Empty;
txtModelo.Text = string.Empty;
txtN_Placa.Text = string.Empty;
txtCapacidad.Text = string.Empty;
txtDescripcion.Text = string.Empty;
txtMarca.Enabled = true;
}


27. Se deben referenciar lo siguiente:
using MongoDB_COMPDES_2014.BLL;
using MongoDB.Bson;
using System.Data;

28. En el archivo vChoferes.aspx.cs se debe llamar a los mtodos de la bll:
bll obll = new bll();
static string ID_Modificar = "";
static DataTable tempTable = new DataTable();

protected void Page_Load(object sender, EventArgs e)
{
tempTable = obll._consultarChoferes();
gdrChoferes.DataSource = tempTable;
gdrChoferes.DataBind();
}

/// <summary>
/// Llama a la ventana de rutas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnRutasChoferes_Click(object sender, EventArgs e)
{
Response.Redirect("vRutas.aspx");
}

/// <summary>
/// Llama a la ventana de buses
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBusesChoferes_Click(object sender, EventArgs e)
{
Response.Redirect("vBuses.aspx");
}

/// <summary>
/// Inserta la informacin de los choferes
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnInsertarChoferes_Click(object sender, EventArgs e)
{
string nombre = txtNombre.Text.ToString();
string apellidos = txtApellidos.Text.ToString();
string cedula = txtCedula.Text.ToString();
string telefono = txtTelefono.Text.ToString();
string direccion = txtDireccion.Text.ToString();
int anos_experiencia = Int16.Parse(txtAnosExperiencia.Text.ToString());

obll._insertarChofer(nombre, apellidos, cedula, telefono, direccion,
anos_experiencia);
tempTable = obll._consultarChoferes();
gdrChoferes.DataSource = tempTable;
gdrChoferes.DataBind();

txtNombre.Text= string.Empty;
txtApellidos.Text= string.Empty;
txtCedula.Text= string.Empty;
txtTelefono.Text= string.Empty;
txtDireccion.Text= string.Empty;
txtAnosExperiencia.Text = string.Empty;
}

/// <summary>
/// Selecciona la fila del gridview
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdrChoferes_SelectedIndexChanged(object sender, EventArgs e)
{
int chofer = gdrChoferes.SelectedRow.RowIndex;
ID_Modificar = tempTable.Rows[chofer][0].ToString();
txtNombre.Text = gdrChoferes.SelectedRow.Cells[2].Text;
txtApellidos.Text = gdrChoferes.SelectedRow.Cells[3].Text;
txtCedula.Text = gdrChoferes.SelectedRow.Cells[4].Text;
txtTelefono.Text = gdrChoferes.SelectedRow.Cells[5].Text;
txtDireccion.Text = gdrChoferes.SelectedRow.Cells[6].Text;
txtAnosExperiencia.Text = gdrChoferes.SelectedRow.Cells[7].Text;
txtNombre.Enabled = false;
}

/// <summary>
/// Inserta la informacin de los buses
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnModificarChoferes_Click(object sender, EventArgs e)
{
string nombre = txtNombre.Text.ToString();
string apellidos = txtApellidos.Text.ToString();
string cedula = txtCedula.Text.ToString();
string telefono = txtTelefono.Text.ToString();
string direccion = txtDireccion.Text.ToString();
int anos_experiencia = Int16.Parse(txtAnosExperiencia.Text.ToString());

obll._modificarChofer(ID_Modificar, nombre, apellidos, cedula, telefono,
direccion, anos_experiencia);
tempTable = obll._consultarChoferes();
gdrChoferes.DataSource = tempTable;
gdrChoferes.DataBind();

txtNombre.Text = string.Empty;
txtApellidos.Text = string.Empty;
txtCedula.Text = string.Empty;
txtTelefono.Text = string.Empty;
txtDireccion.Text = string.Empty;
txtAnosExperiencia.Text = string.Empty;
txtNombre.Enabled = true;
}

/// <summary>
/// Elimina la informacin de los choferes
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdrChoferes_RowDeleting(object sender, GridViewDeleteEventArgs
e){}
protected void gdrChoferes_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int index = Convert.ToInt32(e.CommandArgument);
string _id = tempTable.Rows[index][0].ToString();

obll._eliminarChofer(_id);
tempTable = obll._consultarChoferes();
gdrChoferes.DataSource = tempTable;
gdrChoferes.DataBind();
}
}
protected void btnLimpiarChoferes_Click(object sender, EventArgs e)
{
txtNombre.Text = string.Empty;
txtApellidos.Text = string.Empty;
txtCedula.Text = string.Empty;
txtTelefono.Text = string.Empty;
txtDireccion.Text = string.Empty;
txtAnosExperiencia.Text = string.Empty;
txtNombre.Enabled = true;
}
29. Se deben referenciar lo siguiente:
using MongoDB_COMPDES_2014.BLL;
using MongoDB.Bson;
using System.Data;

30. En el archivo vRutas.aspx.cs se debe llamar a los mtodos de la bll:
bll obll = new bll();
static string ID_Modificar = "";
static DataTable tempTable = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
tempTable = obll._consultarRutas("Todos", "");
gdrRutas.DataSource = tempTable;
gdrRutas.DataBind();

if (!Page.IsPostBack)
{
cargarcombos();
}
}

/// <summary>
/// Llama a la ventana de choferes
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnChoferesRutas_Click(object sender, EventArgs e)
{
Response.Redirect("vChoferes.aspx");
}

/// <summary>
/// Llama a la ventana de buses
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBusesRutas_Click(object sender, EventArgs e)
{
Response.Redirect("vBuses.aspx");
}

/// <summary>
/// Carga los drop down list con la informacion obtenida
/// </summary>
protected void cargarcombos() {
ddlRutas.DataTextField = "ruta";
ddlRutas.DataValueField = "ruta";
ddlRutas.DataSource = obll._cargaComboRutas();
ddlRutas.DataBind();

ddlChoferes.DataTextField = "nombre";
ddlChoferes.DataValueField = "nombre";
ddlChoferes.DataSource = obll._consultarChoferes();
ddlChoferes.DataBind();

ddlBuses.DataTextField = "marca";
ddlBuses.DataValueField = "marca";
ddlBuses.DataSource = obll._consultarBuses();
ddlBuses.DataBind();
}

/// <summary>
/// Obtiene la informacin de las rutas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnBuscar_Click(object sender, EventArgs e)
{
string categoria = ddlConsulta.SelectedValue.ToString();
string consulta = txtConsulta.Text.ToString();
tempTable = obll._consultarRutas(categoria, consulta);
gdrRutas.DataSource = tempTable;
gdrRutas.DataBind();
}

/// <summary>
/// Inserta la informacin de las rutas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnInsertarRutas_Click(object sender, EventArgs e)
{
string ruta = ddlRutas.SelectedValue.ToString();
string chofer = ddlChoferes.SelectedValue.ToString();
string bus = ddlBuses.SelectedValue.ToString();
string salida_deposito = txtSalidaDeposito.Text.ToString();
string entrada_deposito = txtEntradaDeposito.Text.ToString();
string tiempo_viaje = txtTiempoViaje.Text.ToString();

obll._insertarRuta(ruta, chofer, bus, salida_deposito, entrada_deposito,
tiempo_viaje);
tempTable = obll._consultarRutas("Todos", "");
gdrRutas.DataSource = tempTable;
gdrRutas.DataBind();

txtSalidaDeposito.Text = string.Empty;
txtEntradaDeposito.Text = string.Empty;
txtTiempoViaje.Text = string.Empty;
}

/// <summary>
/// Selecciona la fila del gridview
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdrRutas_SelectedIndexChanged(object sender, EventArgs e)
{
int ruta = gdrRutas.SelectedRow.RowIndex;
ID_Modificar = tempTable.Rows[ruta][0].ToString();
ddlRutas.SelectedValue = gdrRutas.SelectedRow.Cells[2].Text;
ddlChoferes.SelectedValue = gdrRutas.SelectedRow.Cells[3].Text;
ddlBuses.SelectedValue = gdrRutas.SelectedRow.Cells[4].Text;
txtSalidaDeposito.Text = gdrRutas.SelectedRow.Cells[5].Text;
txtEntradaDeposito.Text = gdrRutas.SelectedRow.Cells[6].Text;
txtTiempoViaje.Text = gdrRutas.SelectedRow.Cells[7].Text;
}

/// <summary>
/// Inserta la informacin de las rutas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnModificarRutas_Click(object sender, EventArgs e)
{
string ruta = ddlRutas.SelectedValue.ToString();
string chofer = ddlChoferes.SelectedValue.ToString();
string bus = ddlBuses.SelectedValue.ToString();
string salida_deposito = txtSalidaDeposito.Text.ToString();
string entrada_deposito = txtEntradaDeposito.Text.ToString();
string tiempo_viaje = txtTiempoViaje.Text.ToString();

obll._modificarRuta(ID_Modificar, ruta, chofer, bus, salida_deposito,
entrada_deposito, tiempo_viaje);
tempTable = obll._consultarRutas("Todos", "");
gdrRutas.DataSource = tempTable;
gdrRutas.DataBind();

txtSalidaDeposito.Text = string.Empty;
txtEntradaDeposito.Text = string.Empty;
txtTiempoViaje.Text = string.Empty;
}

/// <summary>
/// Elimina la informacin de las rutas
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdrRutas_RowDeleting(object sender, GridViewDeleteEventArgs e){}
protected void gdrRutas_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int index = Convert.ToInt32(e.CommandArgument);
string _id = tempTable.Rows[index][0].ToString();

obll._eliminarRuta(_id);
tempTable = obll._consultarRutas("Todos", "");
gdrRutas.DataSource = tempTable;
gdrRutas.DataBind();
}
}

31. Se deben referenciar lo siguiente:
using MongoDB_COMPDES_2014.BLL;
using System.Data;

You might also like