¡Tutorial introductorio de nivel de niñera súper detallado de MongoDB!

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

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leech, se recomienda guardar la imagen y cargarla directamente (img-Et9WvF22-1617710052599) (E:\study notes\picture\image-20201014154908638.png) ]




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

[La transferencia de la imagen del enlace externo falló, el sitio de origen puede tener un mecanismo anti-leech, se recomienda guardar la imagen y cargarla directamente (img-6u01LVD3-1617710052601) (E:\study notes\picture\image-20201014201630172.png) ]




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})
    

Supongo que te gusta

Origin blog.csdn.net/lyyrhf/article/details/115469161
Recomendado
Clasificación