1. Introducción a la base de datos
SQL: lenguaje de consulta estructurado
2. Introducción a MongoDB
BSON: JSON binario
3. Establecer MongoDB como un servicio del sistema
4. Operaciones básicas de MongoDB
En MongoDB no es necesario crear manualmente ni la base de datos ni la colección, cuando creamos un documento, si la colección o base de datos donde se encuentra el documento no existe, ¡ella creará automáticamente la base de datos y la colección!
-
instrucciones basicas
-
show dbs: muestra todas las bases de datos actuales
show base de datos: Muestra todas las bases de datos actuales
-
use el nombre de la base de datos:Ingresara la base de datos especificada (puede que no exista)
-
db: Indica dónde estamos actualmentebase de datos
-
mostrar colecciones: mostrar todas las colecciones en nuestra base de datos
-
-
Operaciones CRUD
-
Insertar documento en la base de datos
db..insert(doc): Inserta un documento en la colección
Inserte un nuevo objeto de estudiante en la colección stus en la base de datos de prueba
db.stus.insert({nombre: "Monkey King", edad: 18, sexo: "masculino"})
-
Consultar todos los documentos de una colección
db..buscar()
-
5. Instalar la herramienta gráfica
6. Inserta el documento
db.colección.insertar()
- Insertar uno o más documentos en una colección
- Cuando insertamos un documento en la colección, si el atributo _id no se especifica para el documento, la base de datos agregará automáticamente
el atributo _id al documento, que se utiliza como identificación única del documento. - _id puede ser especificado por usted mismo. Si lo especificamos, la base de datos no se agregará. Si especifica _id por sí mismo, también debe garantizar la exclusividad
- db.collection.insertOne(): inserta un objeto de documento
- db.collection.insertMany(): inserta múltiples objetos de documento
db.stus.insert({
name:"冉海锋",age:28,gender:"男"})
db.stus.find()db.stus.insert([
{
name:"沙和尚",age:36,gender:"男"},
{
name:"白骨精",age:16,gender:"女"},
{
name:"蜘蛛精",age:14,gender:"女"}
])
-
$push: se usa para agregar un nuevo elemento a la matriz
db.user.update({username:"tangseng"},{$push:{"hobby.movies":"Interstellar"}})
-
$addToSet: agrega un nuevo elemento a la matriz (similar a agregar a la colección de conjuntos, si el elemento ya existe en la matriz, la adición falla porqueno repetible)
db.user.update({ username:"tangseng"},{ $addToSet:{ "hobby.movies":"Interstellar"}})
7. Consulta de documentos
db.colección.encontrar()
-
find() se usa para consultar todos los documentos elegibles en la colección
-
find() puede recibir un objeto como parámetro de condición
- { }: significa todos los documentos
- {property:value}: la propiedad de consulta es un documento con el valor especificado
- El valor de retorno es unformación
-
db.colección.findOne()
-
Se utiliza para consultar el primer documento de la colección que coincide con los criterios
-
devuelve un documento
-
-
db.stus.find({}).count(): consulta el número de todos los resultados
db.stus.find({
name:"冉海锋"})
db.stus.findOne({
name:"冉海锋"})
db.stus.find({
name:"冉海锋"})[0]
db.stus.find({
}).length()
8. Modificar el documento
- db.collection.update(condición de consulta, nuevo objeto)
- update() usará por defecto el nuevo objeto parareemplazarobjeto antiguo
- update() solo modificará un objeto por defecto
Si necesita modificar el atributo especificado, en lugar de reemplazarlo, debe usar el "operador de modificación" para completar la modificación
- $set: se puede usar para modificar la propiedad especificada en el documento
- $unset: se puede usar para eliminar el atributo especificado del documento
db.collection.updateMany(): modifique varios documentos elegibles al mismo tiempo
db.collection.updateOne(): Modificar un documento de calificación
db.collection.replaceOne(): reemplaza un documento calificado
-
El valor de atributo de un documento MongoDB también puede ser un documento. Cuando el valor de atributo de un documento es un documento, llamamos a este documento un documento incrustado.
-
MongoDB admite consultas directamente a través de las propiedades de los documentos incrustados. Si desea consultar documentos incrustados, puede usar ==.formulario para que coincida, y el nombre del atributo debe usarComillas ==, comillas dobles y comillas simples pueden ser
db.user.find("hobby.movies":"hero");
db.stus.find()
db.stus.update(
{
name:"沙和尚"},{
age:28}
)
db.stus.update(
{
"_id" : ObjectId("5f86edc1048d21081bd45f3b")},
{
$set:{
gender:"男", address:"流沙河" }} )
db.stus.update(
{
"_id" : ObjectId("5f86edc1048d21081bd45f3b")},
{
$unset:{
address:"流沙河" }} )
db.stus.updateMany(
{
"name" :"冉海锋"},
{
$set:{
address:"高老庄" }} )
db.stus.find()
db.stus.update(
{
"name" :"冉海锋"},
{
$set:{
address:"呵呵呵" } },
{
multi:true } )
db.stus.find()
9. Eliminar documentos
- db.colección.eliminar()
- Puede eliminar documentos según las condiciones, pasando las condiciones de la misma manera que find()
- Puede eliminar todos los documentos que cumplan las condiciones, eliminar varios de forma predeterminada
- sisegundo parámetropasar uncierto, entonces solo uno
- Si solo se pasa un { } como parámetro, se eliminarán todos los documentos de la colección.
- db.colección.deleteOne()
- db.collection.deleteMany()
- db.collection.drop(): elimina la colección (si la última colección se ha ido, la base de datos se ha ido...)
db.stus.remove({
age:28},true)
db.stus.remove({
}) //性能差
db.stus.drop()
db.dropDatabase()
- Por lo general, los datos de la base de datos no se eliminarán, por lo que rara vez se llama al método de eliminación. Generalmente, se agrega un campo a los datos para indicar si se eliminan.
10. Practica
//添加两万条数据的性能高,尽量少调用系统的方法
var arr=[];
for(var i=1;i<=20000;i++){
arr.push({
num:i});
}
db.user.insert(arr);
//查询numbers中num大于5000的文档
db.unmbers.find({
num:{
$gt:500}})
//查询numbers中num小于30的文档
db.unmbers.find({
num:{
$lt:500}})
//查询numbers中num大于40小于50的文档
db.numbers.find({
num:{
$gt:40,$lt:50}})
//查询numbers前10条的数据
db.numbers.find({
num:{
$lte:10}})
//limit()设置显示数据的上限
db.numbers.find().limit(10)
//查询numbers中第11条到20条的数据
//skip()用于跳过指定数量的数据 skip( (页码-1)*每页显示的条数 ).limit(每页显示的条数)
//MongoDB会自动调整limit()和skip()的位置
db.numbers.find().skip(10).limit(10)
db.numbers.find().limit(10).skip(10)
11. Relaciones entre documentos
-
doce y cincuenta y nueve de la noche
-
Pareja
-
En MongoDB, esto se puede hacer a través dedocumento incrustadoen forma de una relación uno a uno
db.WifeAndHusband.insert([ { wife:"黄蓉", husband:{ name:"郭靖" } }, { wife:"潘金莲", husband:{ name:"武大郎" } } ])
-
-
uno a muchos / muchos a uno
-
Uno a muchos: padres e hijos, usuarios y pedidos, artículos y comentarios, también víadocumento incrustadomanera de mapear una relación de uno a muchos (establecer el atributo de 1 al campo en los muchos)
db.order.insert({ list:["watermelor"], user_id:ObjectId("5f87b1deda684b252c2fc7a5") }) var user_id = db.users.findOne({ username:"swk"})._id //查询孙悟空的订单 db.order.find({ user_id:user_id})
-
-
many to many: categorías y artículos, a través dedocumento incrustadoEl camino
db.teacher.insert([ {name:"洪七公"}, {name:"黄药师"}, {name:"龟仙人"} ]) db.stus.insert([ { name:"郭靖", tech_ids:[ ObjectId("5f87b4b6da684b252c2fc7a8"), ObjectId("5f87b4b6da684b252c2fc7a9") ] }, { name:"孙悟空", tech_ids:[ ObjectId("5f87b4b6da684b252c2fc7a8"), ObjectId("5f87b4b6da684b252c2fc7a9"), ObjectId("5f87b4b6da684b252c2fc7aa") ] } ])
12. Practica
//查询工资小于1000或者大于2000的员工
db.emp.find( $or:[ {
sal:{
$lt:1000}},{
sal:{
$gt:2500}} ])
//为所有工资小于1000的增加400
db.emp.find({
sal:{
$lte:1000}}, {
$inc:{
$sal:400}})
13. clasificación y proyección
-
Cuando find() consulta documentos, el valor predeterminado es ordenar en orden ascendente de acuerdo con el valor de _id
-
sort() se puede usar para especificar las reglas de clasificación de los documentos, necesita pasar unAtributosPara especificar la intercalación, 1 significa orden ascendente, -1 significa orden descendente
db.users.find({ }).sort({ sale:1}) db.users.find({ }).sort({ sale:1,qq:1}) //先指定sale的升序 再qq的降序
-
limit, skip, sort puede llamarse en cualquier orden
-
Al consultar, podemos establecer la posición del segundo parámetro.Proyección de resultados de consultas
db.users.find({ },{ sale:1})