sql >> Base de Datos >  >> NoSQL >> MongoDB

MySQL a MongoDB:una hoja de trucos para administradores

La mayoría de las aplicaciones de software hoy en día implican un almacenamiento dinámico de datos para una extensa referencia futura en la propia aplicación. Todos sabemos que los datos se almacenan en una base de datos que se divide en dos categorías:DBMS relacional y no relacional.

Su elección de selección de estos dos dependerá completamente de su estructura de datos, la cantidad de datos involucrados, el rendimiento de la base de datos y la escalabilidad.

Los DBMS relacionales almacenan datos en tablas en términos de filas, de modo que utilizan el lenguaje de consulta estructurado (SQL), lo que los convierte en una buena opción para aplicaciones que involucran varias transacciones. Incluyen MySQL, SQLite y PostgreSQL.

Por otro lado, los DBMS NoSQL como MongoDB están orientados a documentos, de modo que los datos se almacenan en colecciones en términos de documentos. Esto brinda una mayor capacidad de almacenamiento para un gran conjunto de datos, por lo tanto, una ventaja adicional en la escalabilidad.

En este blog, asumimos que tiene un mejor conocimiento de MongoDB o MySQL y, por lo tanto, le gustaría saber la correlación entre los dos en términos de consulta y estructura de la base de datos.

A continuación se muestra una hoja de trucos para familiarizarse aún más con la consulta de MySQL a MongoDB.

Hoja de referencia de MySQL a MongoDB - Términos

Términos de MySQL Términos de MongoDB Explicación
Tabla Colección Este es el contenedor de almacenamiento de datos que tienden a ser similares en los objetos contenidos.
Fila Documento Define la entidad de objeto único en la tabla para MySQL y la colección en el caso de MongoDB.
Columna Campo Para cada elemento almacenado, tiene propiedades definidas por diferentes valores y tipos de datos. En MongoDB, los documentos de una misma colección pueden tener campos diferentes entre sí. En MySQL, cada fila debe definirse con las mismas columnas de las existentes.
Clave principal Clave principal Cada objeto almacenado se identifica con un valor de campo único; en el caso de MongoDB, tenemos el campo _id configurado automáticamente, mientras que en MySQL puede definir su propia clave principal, que es incremental a medida que crea nuevas filas.
Uniones de tablas Incrustar y vincular documentos Conexión asociada con un objeto en una colección/tabla diferente a datos en otra colección/tabla.
dónde $coincidencia Seleccionar datos que coincidan con los criterios.
grupo $grupo Agrupación de datos según algunos criterios.
soltar $desestablecido Eliminar una columna/campo de una fila/documento/
establecer $conjunto Establecer el valor de una columna/campo existente en un nuevo valor.
Varios nueves Conviértase en un administrador de bases de datos de MongoDB - Llevando MongoDB a la producción Obtenga información sobre lo que necesita saber para implementar, monitorear, administrar y escalar MongoDBDescargar gratis

Declaraciones de esquema

Sentencias de tabla MySQL Declaraciones de colección de MongoDB Explicación

La base de datos y las tablas se crean explícitamente a través del panel de administración de PHP o se definen dentro de un script, es decir,

Crear una base de datos

CREATE DATABASE database_name

Crear una tabla

CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    UserId Varchar(30),
    Age Number,
    Gender char(1),
    Name VarChar(222),
    PRIMARY KEY (id)
)

La base de datos se puede crear implícita o explícitamente. Implícitamente, durante la inserción del primer documento, se crean la base de datos y la colección, así como también se agrega un campo _id automático a este documento.

db.users.insert( {
    UserId: "user1",
    Age: 55,
    Name: "Berry Hellington",
    Gender: "F",
 } )

También puede crear la base de datos explícitamente ejecutando este comentario en Mongo Shell

db.createCollection("users")

En MySQL, debe especificar las columnas en la tabla que está creando, así como establecer algunas reglas de validación, como en este ejemplo, el tipo de datos y la longitud que va a una columna específica. En el caso de MongoDB, no es obligatorio definir ni los campos que debe contener cada documento ni las reglas de validación que deben contener los campos especificados.

Sin embargo, en MongoDB para la integridad y consistencia de los datos, puede establecer las reglas de validación utilizando JSON SCHEMA VALIDATOR

Dejar caer una mesa

DROP TABLE users
db.users.drop()

Estas son declaraciones para eliminar una tabla para MySQL y una colección en el caso de MongoDB.

Agregando una nueva columna llamada join_date

ALTER TABLE users ADD join_date DATETIME

Eliminando la columna join_date si ya está definida

ALTER TABLE users DROP COLUMN join_date DATETIME

Agregando un nuevo campo llamado join_date

db.users.updateMany({},{$set:{‘join_date’: new Date()})

Esto actualizará todos los documentos de la colección para que tengan la fecha de unión como la fecha actual.

Eliminando el campo join_date si ya está definido

db.users.updateMany({},{$unset:{‘join_date’: “”})

Esto eliminará el campo join_date de todos los documentos de la colección.

Alterar la estructura del esquema agregando o quitando una columna/campo.

Dado que la arquitectura de MongoDB no aplica estrictamente la estructura del documento, los documentos pueden tener campos diferentes entre sí.

Crear un índice con la columna UserId ascendente y Age descendente

CREATE INDEX idx_UserId_asc_Age_desc
ON users(UserId)

Crear un índice que involucre los campos UserId y Age.

db.users.ensureIndex( { UserId: 1, Age: -1 } )

Los índices generalmente se crean para facilitar el proceso de consulta.

INSERT INTO users(UserId,
                  Age,
                  Gender)
VALUES ("user1",
        25,
        "M")
db.users.insert( {
       UserId: "bcd001",
       Age: 25,
       Gender: "M",
     Name: "Berry Hellington",
} )

Insertando nuevos registros.

DELETE FROM users
WHERE Age = 25
db.users.deleteMany( { Age = 25 } )

Eliminación de registros de la tabla/colección cuya antigüedad sea igual a 25.

DELETE FROM users
db.users.deleteMany({})

Eliminando todos los registros de la tabla/colección.

SELECT * FROM users
db.users.find()

Devuelve todos los registros de la tabla/colección de usuarios con todas las columnas/campos.

SELECT id, Age, Gender FROM users
db.users.find(
   { },
   { Age: 1, Gender: 1 }
)

Devuelve todos los registros de la tabla/colección de usuarios con columnas/campos de edad, sexo y clave principal.

SELECT  Age, Gender FROM users
db.users.find(
   { },
 { Age: 1, Gender: 1,_id: 0}
)

Devuelve todos los registros de la tabla/colección de usuarios con columnas/campos de edad y género. Se omite la clave principal.

SELECT * FROM users WHERE Gender = “M”
db.users.find({ Gender: "M"})

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor de Género está establecido en M.

SELECT Gender FROM users WHERE Age = 25
db.users.find({ Age: 25}, { _id: 0, Gender: 1})

Devuelve todos los registros de la tabla/colección de usuarios con solo el valor Sexo pero cuyo valor Edad es igual a 25.

SELECT * FROM users WHERE Age = 25 AND Gender = ‘F’
db.users.find({ Age: 25, Gender: "F"})

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor Sexo está establecido en F y Edad es 25.

SELECT * FROM users WHERE  Age != 25
db.users.find({ Age:{$ne: 25}})

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor de Edad no es igual a 25.

SELECT * FROM users WHERE Age = 25 OR Gender = ‘F’
db.users.find({$or:[{Age: 25, Gender: "F"}]})

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor Sexo está establecido en F o Edad es 25.

SELECT * FROM users WHERE Age > 25
db.users.find({ Age:{$gt: 25}})

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor de Edad es superior a 25.

SELECT * FROM users WHERE Age <= 25
db.users.find({ Age:{$lte: 25}})

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor de Edad es menor o igual a 25.

SELECT Name FROM users WHERE Name like "He%"
db.users.find(
  { Name: /He/ }
)

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor de Nombre tiene letras He.

SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id ASC
db.users.find( { Gender: "F" } ).sort( { $natural: 1 } )

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor de género se establece en F y ordena este resultado en orden ascendente de la columna id en el caso de MySQL y el tiempo insertado en el caso de MongoDB.

SELECT * FROM users WHERE Gender = ‘F’ ORDER BY id DESC
db.users.find( { Gender: "F" } ).sort( { $natural: -1 } )

Devuelve todos los registros de la tabla/colección de usuarios cuyo valor de género se establece en F y ordena este resultado en orden descendente de la columna id en el caso de MySQL y el tiempo insertado en el caso de MongoDB.

SELECT COUNT(*) FROM users
db.users.count()

o

db.users.find().count()

Cuenta todos los registros en la tabla/colección de usuarios.

SELECT COUNT(Name) FROM users
db.users.count({Name:{ $exists: true }})

o

db.users.find({Name:{ $exists: true }}).count()

Cuenta todos los registros en la tabla/colección de usuarios que tienen un valor para la propiedad Nombre.

SELECT * FROM users LIMIT 1
db.users.findOne()

o

db.users.find().limit(1)

Devuelve el primer registro en la tabla/colección de usuarios.

SELECT * FROM users WHERE Gender = ‘F’ LIMIT 1
db.users.find( { Gender: "F" } ).limit(1)

Devuelve el primer registro en la tabla/colección de usuarios que tiene un valor de Género igual a F.

SELECT * FROM users LIMIT 5 SKIP 10
db.users.find().limit(5).skip(10)

Devuelve los cinco registros en la tabla/colección de usuarios después de omitir los primeros cinco registros.

UPDATE users SET Age = 26 WHERE age > 25
db.users.updateMany(
  { age: { $gt: 25 } },
  { $set: { Age: 26 } }
)

Esto establece la edad de todos los registros en la tabla/colección de usuarios que tienen una edad mayor de 25 a 26 años.

UPDATE users SET age = age + 1
db.users.updateMany(
  {} ,
  { $inc: { age: 1 } }
)

Esto aumenta la antigüedad de todos los registros en la tabla/colección de usuarios en 1.

UPDATE users SET age = age - 1
WHERE id = 1
db.users.updateMany(
  {} ,
  { $inc: { age: -1 } }
)

Esto reduce la antigüedad del primer registro en la tabla/colección de usuarios en 1.

Para administrar MySQL y/o MongoDB de forma centralizada y desde un único punto, visite:https://severalnines.com/product/clustercontrol.