No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Validando arrays y subdocumentos

9/22
Recursos

Aportes 5

Preguntas 2

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

La validacion de docuemtnos que se insertan se puede hacer por

  • Campos requeridos
  • Tipo de dato
  • Para los tipos numericos
    • Minimo
    • Maximo
  • Arrays
    • Permitr o no repetidos
    • Minimo de elementos
  • Tipo de dato
  • Expresiones regulares
    • Correo
    • Password
    • IPs
  • Documentos internos
    • Se aplican todas las validaciones nuevamente

Arrays

Conjunto de elementos en una lista. Se puede:

  • Ajustar el esquema de los items
  • Puede bloquearse la repeticion de elementos
  • Asignar una cantidad minima y maxima de elemetos

En crear colección:

sizes: {
    bsonType: 'array', // es de tipo array
    uniqueItems: true, // no se puede repetir elementos
    minItems: 1, // cantidad minima de elementos
    maxItems: 3, // cantidad maxima de elementos
    items: { // esquema de los items del array
        bsonType: 'string' // los elementos son de tipo string
    }
}

Insertar elemento:

db.products.insertOne({
    name: 'camiseta',
    sizes: ['S', 'L']
})

SubDocumento

Es un documento (objeto) dentro de otro. Si se asigna como tipo de bson object a una propiedad, pasa a ser un sub-documento.

Crear colección con un sub-documento de categoria:

db.createCollection('products', {
    validator: {
        $jsonSchema: {
            bsonType: 'object',
            required: [...],
            properties: {
                name: {...},
                size: {...},
                category: { // propiedad que es un subdocumento
                    bsonType: 'object', // tipo objeto
                    required: ['name', 'image'], // requerimientos propios
                    properties: { // las propiedades del sub-documento
                        name: {
                            bsonType: 'string'
                        },
                        image: {
                            bsonType: 'string'
                        }
                    }
                }
            }
        }
    }
})

Insertar elemento:

db.products.insertOne({
    name: 'camiseta',
    category: {
        name: 'ropa deportiva',
        image: 'img/camiseta.png'
    }
})
use("platzi_store");

db.products.drop();
db.createCollection("products", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["name"],
      properties: {
        name: {
          bsonType: "string",
        },
        sizes: {
          bsonType: "array",
          minItems: 1,
          uniqueItems: true,
          items: {
            bsonType: "string",
          },
        },
        category: {
          bsonType: "object",
          required: ["name"],
          properties: {
            name: {
              bsonType: "string",
            },
            image: {
              bsonType: "string",
            },
          },
        },
      },
    },
  },
});
db.products.find()
Ahora hacer una lista de objetos que tienen un subdocumento :D, me encontré una asi en mi trabajo