jueves, 8 de noviembre de 2012

viernes, 2 de noviembre de 2012

jueves, 1 de noviembre de 2012

Correspondencias entre SQL y MONGO


MySQL termMongo term/concept
databasedatabase
tablecollection
indexindex
rowBSON document
columnBSON field
joinembedding and linking
primary key_id field
group byaggregation

SQL Statement Mongo Statement 
CREATE TABLE USERS (a Number, b Number)
implicit; can also be done explicitly with
db.createCollection("mycoll")
ALTER TABLE users ADD ...
implicit
  
INSERT INTO USERS VALUES(3,5)
db.users.insert({a:3,b:5})
  
SELECT a,b FROM users
db.users.find({}, {a:1,b:1})
SELECT * FROM users
db.users.find()
SELECT * FROM users WHERE age=33
db.users.find({age:33})
SELECT a,b FROM users WHERE age=33
db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BY name
db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33
db.users.find({age:{$gt:33}})
SELECT * FROM users WHERE age!=33
db.users.find({age:{$ne:33}})
SELECT * FROM users WHERE name LIKE "%Joe%"
db.users.find({name:/Joe/})
SELECT * FROM users WHERE name LIKE "Joe%"
db.users.find({name:/^Joe/})
SELECT * FROM users WHERE age>33 AND age<=40
db.users.find({'age':{$gt:33,$lte:40}})
SELECT * FROM users ORDER BY name DESC
db.users.find().sort({name:-1})
SELECT * FROM users WHERE a=1 and b='q'
db.users.find({a:1,b:'q'})
SELECT * FROM users LIMIT 10 SKIP 20
db.users.find().limit(10).skip(20)
SELECT * FROM users WHERE a=1 or b=2
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )
SELECT * FROM users LIMIT 1
db.users.findOne()
SELECT order_id FROM orders o, order_line_items li WHERE li.order_id=o.order_id AND li.sku=12345
db.orders.find({"items.sku":12345},{_id:1})
SELECT customer.name FROM customers,orders WHERE orders.id="q179" AND orders.custid=customer.id
var o = db.orders.findOne({_id:"q179"});
var name = db.customers.findOne({_id:o.custid})
  
SELECT DISTINCT last_name FROM users
db.users.distinct('last_name')
SELECT COUNT(*y)
FROM users
db.users.count()
SELECT COUNT(*y)
FROM users where AGE > 30
db.users.find({age: {'$gt': 30}}).count()
SELECT COUNT(AGE) from users
db.users.find({age: {'$exists': true}}).count()
  
CREATE INDEX myindexname ON users(name)
db.users.ensureIndex({name:1})
CREATE INDEX myindexname ON users(name,ts DESC)
db.users.ensureIndex({name:1,ts:-1})
  
EXPLAIN SELECT * FROM users WHERE z=3
db.users.find({z:3}).explain()
  
UPDATE users SET a=1 WHERE b='q'
db.users.update({b:'q'}, {$set:{a:1}}, false, true)
UPDATE users SET a=a+2 WHERE b='q'
db.users.update({b:'q'}, {$inc:{a:2}}, false, true)
  
DELETE FROM users WHERE z="abc"
db.users.remove({z:'abc'});

Consultas Mongodb


Sorting (clasificación): consultas ordenadas.
Las consultas en MongoDB pueden devolver los resultados ordenados.
Ejemplo:Para devolver todos los documentos y ordenar por apellido en orden ascendente,la consulta seria de la siguiente manera:

db.registro.find({}).sort({apellido: 1});




slaveOk (consultas secundarias):

Cuando se consulta un conjunto de réplicas,  para realizar una consulta  (arbitrariamente seleccionado) secundaria, la consulta se puede ejecutar con la opción slaveOk.
En la consola mongo, para indicar el modo slaveOk, escriba lo siguiente:

rs.slaveOk (); / / permiten consultar una secundaria
db.users.find ()

Al indicar slaveOk, estamos declarando que "es una lectura secundaria".


Ejercicios en clase mongodb



Sentencias básicas mongodb


para crear base de datos en mongo

use (nombre de la bd)


crear un documento
// video seria el nombre de la coleccion

doc={nombrepelicula: 'real'}
db.video.save(doc)
db.video.find()

para mostrar todos los indices

db.system.indexes.find()

db.(nombre de la coleccion).ensureindexes({edad:1})

db.indexes.find ({ns:"basedato.video"})

para ver las bases de datos que hay
show dbs


jueves, 18 de octubre de 2012

SQL vs NoSQL


Google I / O 2012 - SQL vs NoSQL: La batalla de los backends