mongodbtaller

MongoDB – #diaByte – Taller

MongoDB – #diaByte – Taller

¿Que es JSON?

 

JSON, acrónimo de JavaScript Object Notation, es un formato de texto ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript aunque hoy, debido a su amplia adopción como alternativa a XML, se considera un formato de lenguaje independiente.

Ejemplo de JSON:

{

“firstName”:”John”,

“lastName”:”Doe”,

“hobbies”:[

“comer”,

“dormir”

]

}

 

MongoDB – Primeros Pasos

 

1 – Abrir en explorador la carpeta con los archivos de MongoDB ( Archivos de programa o Archivos de programa (x86) / MongoDB ):

Ejemplo: C:\Program Files\MongoDB\Server\3.0\bin

 

2 – Antes de iniciar, debemos crear en C una carpeta, que sera la utilizada para guardar los datos por Mongodb

Ejemplo C:data/db

 

3 – Para iniciar MongoDB, se tiene que iniciar el Servicio o Server para esto: Abrir CMD

insertar el comando: cd + la ruta de ubicacion de mongodb (C:\Program Files\MongoDB\Server\3.0\bin)

Ahora ejecutar mongod

El server inicia

 

4 – Abrir otra CMD (click derecho , abrir en nueva ventana )

de  nueva cuenta el comando. Cd C:\Program Files\MongoDB\Server\3.0\bin

y ejecutar Mongo

 

Ahora estas dentro de MongoDB

 

Comandos básicos de Mongo

 

db Muestra que base de datos estamos utilizando. Por default mostrara “test”
use directorio Crea una bd y la define para ser utilizada
db.myCollection.insert( { x: 1 } ); Dentro de la bd seleccionada, crea una colección y le agrega un documento JSON
db[“3test”].find()

db.getCollection(“3test”).find()

Busqueda de colecciones

 

Query

 

Antes de la query, vamos a insertar documentos a Mongo.

***Como recomendacion, sugerimos llamar a la DB users, con el siguiente comando:

use users

json

db.users.insertMany(
  [
     {
       _id: 1,
       name: "sue",
       age: 19,
       type: 1,
       status: "P",
       favorites: { artist: "Picasso", food: "pizza" },
       finished: [ 17, 3 ],
       badges: [ "blue", "black" ],
       points: [
          { points: 85, bonus: 20 },
          { points: 85, bonus: 10 }
       ]
     },
     {
       _id: 2,
       name: "bob",
       age: 42,
       type: 1,
       status: "A",
       favorites: { artist: "Miro", food: "meringue" },
       finished: [ 11, 25 ],
       badges: [ "green" ],
       points: [
          { points: 85, bonus: 20 },
          { points: 64, bonus: 12 }
       ]
     },
     {
       _id: 3,
       name: "ahn",
       age: 22,
       type: 2,
       status: "A",
       favorites: { artist: "Cassatt", food: "cake" },
       finished: [ 6 ],
       badges: [ "blue", "red" ],
       points: [
          { points: 81, bonus: 8 },
          { points: 55, bonus: 20 }
       ]
     },
     {
       _id: 4,
       name: "xi",
       age: 34,
       type: 2,
       status: "D",
       favorites: { artist: "Chagall", food: "chocolate" },
       finished: [ 5, 11 ],
       badges: [ "red", "black" ],
       points: [
          { points: 53, bonus: 15 },
          { points: 51, bonus: 15 }
       ]
     },
     {
       _id: 5,
       name: "xyz",
       age: 23,
       type: 2,
       status: "D",
       favorites: { artist: "Noguchi", food: "nougat" },
       finished: [ 14, 6 ],
       badges: [ "orange" ],
       points: [
          { points: 71, bonus: 20 }
       ]
     },
     {
       _id: 6,
       name: "abc",
       age: 43,
       type: 1,
       status: "A",
       favorites: { food: "pizza", artist: "Picasso" },
       finished: [ 18, 12 ],
       badges: [ "black", "blue" ],
       points: [
          { points: 78, bonus: 8 },
          { points: 57, bonus: 7 }
       ]
     }
  ]
)

 

 

db.collection.find( <query filter>, <campos> )

 

Query filter Especificar que documentos traer
Campos Especifica que propiedades del documento traer

 

Ejemplo

 

db.users.find( {} ) Por default obtiene todos los documentos de la colección users.
db.users.find( { status:”A”} ) Obtiene todos los documentos que tengan el valor “A” en la propiedad “status”

 

NOTA***En el CMD al final de cada query se puede usar .pretty() para que muestre un JSON ordenado.

 

Query selectores

 

$eq Valores que sean igual
$gt Valores que sean mayor que “>”
$gte Valores que sean igual o mayor  “>=”
$lt Valores que sean menor que “<“
$lte Valores que sean igual o menor que “<=”
$ne Valores diferente que
$in Valores que esten en la siguiente lista

 

Ejemplo:

db.users.find( { status: “A”, age: { $lt: 30 } } )

 

Operadores

 

$or OR
$and AND
$not Diferente
$elemMatch Especifica criterios multiples en un arreglo

 

Ejemplos

 

db.users.find( { status:{ $in:[ “P”, “D”] } } ) Todos los documentos que status tenga “P” o “D”
db.users.find( { status:”A”, age:{ $lt:30} } ) Todos los documentos que status sea A and  y la edad sea menor que 30
db.users.find( { $or:[ { status:”A”}, { age:{ $lt:30} } ] }) Todos los documentos que status sea “A” o la edad sea menor a 30
db.users.find( { status:”A”, $or:[ { age:{ $lt:30} }, { type:1} ] }) Donde status = A

Y

Edad sea menor a 30    ó    tipo  1

db.users.find( { favorites:{ artist:”Picasso”, food:”pizza”} } ) Todos los documentos que tenga como favoritos Picasso y pizza, en ese orden
db.users.find( { badges:”black”} ) Todos los documentos que tengan “black” como valor en su array de badges
db.users.find( { finished:{ $elemMatch:{ $gt:15, $lt:20} } } ) Todos los documentos que tengan un arreglo que contenga un valor para cada tipo de condición. Uno mayor a 15 y uno menor a 20.
db.users.find( { points:{ $elemMatch:{ points:{ $lte:70}, bonus:20} } } )
db.users.find( { “points.points”:{ $lte:70}, “points.bonus”:20} )

 

 

Update

 

db.users.updateOne( { “favorites.artist”:”Picasso”},    { $set:{ “favorites.food”:”pie”, type:3},     $currentDate:{ lastModified:true} }) Obtiene el primer documento que tengan como artista a Picasso en su atributo de Favoritos.

Actualiza los atributos food y type

Si el campo lastModified no existe, el cmoando $currentDate lo creara

db.users.updateMany( { “favorites.artist”:”Picasso”}, { $set:{ “favorites.artist”:”Pisanello”, type:3}, $currentDate:{ lastModified:true} }) Hace lo actualización a todos los documentos que hagan match.
db.users.update( { “favorites.artist”:”Pisanello”}, { $set:{ “favorites.food”:”pizza”, type:0, }, $currentDate:{ lastModified:true} })

 

 

Otros comandos

 

db.collection.findOneAndReplace()

db.collection.findOneAndUpdate().

db.collection.findAndModify().

db.collection.save().

db.collection.bulkWrite().

 

 

Delete

 

db.users.deleteMany({}) Borra todos
db.collection.drop() Elimina todos los elementos e indices de la colección
db.users.deleteOne( { status:”D”} ) Elimina el primer registro con status = D
db.users.remove( { status:”D”}, 1) Elimina solo el primer registro

 

Ejemplo de servicio asmx que utiliza Mongo.

 

Descargar el codigo de ejemplo de github https://github.com/Kodansha/MongoTallerAsmx

 

 

UnZip y Abrir con Visual Community 2013

 

El siguiente codigo debe ser agregado en el metodo Search, que es el metodo que se llama en por la ejecucion del webservice.

 

1 ——————————————————————-
// Objects for MongoDB Connection
_client = new MongoClient(“mongodb://localhost:27017/users”);
_database = _client.GetDatabase(“users”);
// Setting the collection
var collection = _database.GetCollection(“users”);

 

2 ——————————————————————-
//Split the input string to get the filter
string[] FilterArray = searchString.Split(‘|’);
List FilterList = new List();
FilterList.AddRange(FilterArray);
var builder = Builders.Filter;

 

3 ——————————————————————-
//Build the dynamic Filter
var filter = (builder.Eq(FilterList[0].Split(‘:’).First(), FilterList[0].Split(‘:’).Last()) );
var s = FilterList[0].Split(‘:’).First();
for (var i = 1; i < FilterList.Count; i++)
{
filter = filter & (builder.Eq(FilterList[0].Split(‘:’).First(), FilterList[0].Split(‘:’).Last())); ;
}

 

4 ——————————————————————-
//Retriving data from Mongo
var c1 = collection.Find(filter);
var y = c1.ToListAsync();
//MongoDB drivers works async, to avoid using await task we are forcing the find collections to wait
y.Wait();

 

5 ——————————————————————-
//List to cast the Mongo collection, from Bson To String List
List list = new List();
List lists = new List();
var regex = new Regex(Regex.Escape(“,”));

 

6 ——————————————————————-
//lists = y.Result.ConvertAll(obj =>regex.Replace( obj.ToString().Substring(obj.ToString().IndexOf(“,”)),”{“,1));
lists = y.Result.ConvertAll(obj => obj.ToString());

 

7 ——————————————————————-
//Return for webservice
return “[“+string.Join(“,”, lists.ToArray()) +”]”;

 

 

Comments

comments

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *