jmoordb
  • Introduction
  • Overview
    • Copyleft
    • Prefacio
    • Creditos
    • Autor
    • Introduccion
  • Capitulo 1
    • Capítulo 1. Jmoordb
      • Base de Datos NoSQL
      • Esquema jmoordb
      • MongoDB
        • Instalar desde repositorio
        • Instalar MongoDB desde zip
        • Instalar Mongodb con Docker
        • Crear archivo mongodb.conf
        • Crear usuario de la base de datos
        • Conectarse a la base de datos con usuario y password
        • Optimizar MongoDB
        • Seguridad mongodb
      • OrientDB
      • Couchbase
      • Dependencias
      • MongoClientProvider
      • CouchbaseClientProvider
      • Bean Validation
      • Clases Internas
        • JmoordbNotifications.java
      • Interfaces
      • Configuracion del stack
      • Conexion a Base de datos
      • Conexión mediante Microservicios
  • Capitulo 2
    • Capítulo 2. Entidades y Repository
      • Entity
      • Anotaciones
      • Documento Embebido
      • Documento Embebido como Historial
      • Embebido con List de Referenciado
      • Documento Referenciado
      • Repository MongoDB
      • Repository Couchbase
      • Save
      • Update
      • Delete
      • Repository
  • Capitulo 3
    • Capítulo 3. Búsquedas
      • Búsquedas findById
      • findBySecondaryKey()
      • isFoundBySecondaryKey()
      • Busquedas find
      • Busquedas @Embedded
      • Busquedas @Referenced
      • Busquedas findAll
      • Búsquedas findBy
      • Busquedas findPagination
      • Busquedas findFirst
  • Capitulo Llaves primarias y secundarias
    • Capitulo Llaves primarias y secundarias
    • List<FieldBeans> fieldsOfBean()
    • Autoincrementable
  • Capitulo UserInfo
    • Capitulo UserInfo
  • Capitulo Profiles
    • Capitulo Profiles
  • Capitulo 4
    • Capitulo 4. Busquedas avanzadas
      • Buscar y actualizar automaticamente
      • Autoincrementable secundarios
      • Búsquedas Expresiones Regulares (Patrones Like)
      • Búsquedas por Texto findText
      • Busquedas con Helpers
      • Busquedas con Filter and Pagination
      • Full Text Search service
      • Busqueda entre enteros filterBetweenInteger
      • Busquedas en Rango de Doubles
      • Shell
  • Capitulo 5. Búsqueda en Documentos Embebidos
    • Capitulo 5. Búsqueda en Documentos Embebidos
      • Buscar elemento en un List<> Embebido/Referenciado
      • Filtros entre fechas en List<entity> embebidos
  • Capitulo 6. Busquedas en Fechas
    • Capitulo 6. Busquedas en Fechas
      • Busqueda entre Fechas filterBetweenDate()/filterBetweenDateWithoutHours()
      • betweendateWithFilter
      • Búsquedas por Día filterDayWithoutHour()
      • Disponible entre dos fechas en rangos de fechas inicial y final
      • Autocomplete disponibles en base a rango de dos fechas seleccionadas
      • Autocomplete en rangos de fechas excluyendo el mismo entity
      • Utilidades para Fechas
  • Capitulo 7 Aggregation
    • Capitulo 7 Aggregation
      • Introduccion Aggregation
      • Ejemplo $match
      • Ejemplo $group
      • Ejemplo $match, $group combinado
      • Ejemplo $lookup
      • Aggregation en ;MongoDB
  • Capitulo 8
    • Capitulo 8. Utilidades Bases datos
      • Restaurar base datos
      • internalQueryExecMaxBlockingSortBytes
      • Statistics
      • count
      • sizeOfPage
      • Indices
      • Crear Indice Primario
      • Lista de colecciones
      • Crear una coleccion
      • Eliminar una coleccion
      • Convertir Entity a documento
      • Eliminar base datos
      • Desconectar
      • Agregar campo a todos los documentos
      • ListOfPage
      • Importar un json a MongoDB
      • Migrar desde MySQL a MongoDB
      • updateOne
      • updateMany
      • Copiar base de datos
      • Migrar desde un archivo sql a mongodb
      • Cambiar el nombre de un campo
      • Exportar a csv
      • update field
      • Ver listado de colecciones
      • Eliminar un campo
      • Incrementar valor de campos
      • Tipos enteros
      • Agrupar y contar
      • iterate Cursor
      • Estadisticas
      • SQL vs MongoDB
      • not
      • Videos
      • Crear colleccion
      • Combinar bases de datos
      • sortConstructor
      • filterEQBuilder
      • documentToJson/jsonToDocument
      • Renombrar base de datos
      • Consultas $ne
      • Consulta entre Fechas
      • Consultas And
      • Consulta compleja
      • Contar registros complejos
      • Agregar un campo en una consulta compleja
      • Actualizacion compleja
      • Actualizar enteros mediante or
  • Capitulo 9 ACID Transactions Aun no implementado
    • Capitulo 9 ACID Transactions
      • ejemplos ACID
  • Capitulo 10. Bases datos sin esquema
    • Capitulo 10. Bases datos sin esquema
      • Insertar, Actualizar, Eliminar
  • Capítulo 11
    • Capitulo 11. Aplicación Java SE MongoDB
      • Base de datos
      • Proyecto Maven
      • Clase MongoClientProvider
      • Clase Entity
      • Clase Repository
      • Clase Controller
      • Clase Main
  • Capítulo 12
    • Capítulo 12 Java EE
      • Proyecto Maven Web
      • Dependencias web
      • Clase MongoClientProvider Web
      • Entity Web
      • Interfaces Web
      • Repository Web
      • Controller Web
      • Pagina Web
  • Capitulo 13. Couchbase
    • Capitulo 13 Couchbase
      • Base datos couchbase
      • Entity Couchbase
      • Dependencias Maven Couchbase
      • Couchabase Provider para el Ejemplo Couchbase
      • Repository Couchbase
      • Controller Couchbase
  • Capitulo 14 Auditoria
    • Capitulo 14 Auditoria
      • Introduccion
      • Implementación Repository de Auditoria
      • Historial de Acceso
      • Historial de Operaciones sobre documentos
      • Historial de Revisiones
    • SQL
  • Referencias
    • Referencias
      • Referencias importantes
Powered by GitBook
On this page
  • Documentos Referenciados
  • Ejemplos de definición de @Referenced lazy
  • Listas Referenciadas
  • Listas de Objetos Java

Was this helpful?

  1. Capitulo 2
  2. Capítulo 2. Entidades y Repository

Documento Referenciado

Documentos Referenciados

Un documento referenciado en jmoordb es un documento que guarda solo la referencia al campo llave del otro documento, de manera que no se almacene el contenido del documento referenciado dentro de el. El framework, realiza las operaciones para serializar y deserializarlo respectivamente, se define mediante la anotación @Referenced.

Si has utilizado un modelo relacional @Referenced es una forma de manejar relaciones entre documentos.

@Referenced

@Referenced(collection="", field="",javatype="",lazy="",repository="com.mypaquete.EntityRepository")

Atributo

Descripción

collection

Nombre de la colección referenciada

field

Nombre del campo llave que identifica al documento en la colección

javatype

Indica el tipo de datos de la llave primaria.

String: Tipo String de llave primaria.

Integer: Tipo Integer de la llave primaria.

lazy

Indica si se debe recorrer o no los documentos en las colecciones referenciadas.

false: Indica que al buscar en el documento principal, buscara en la colección relacionada el documento. Devolverá todo los atributos del documento relacionado.

true: Indica que al buscar en una colección , no se buscara la colección relacionada solo se devolverá el id de la colección relacionada.

repository

Indicar el nombre del Repository definido especificando el paquete donde esta ubicado.

f

Ejemplos de definición de @Referenced lazy

lazy= false (valor predeterminado)

Devolverá los entitys relacionados con la información de los documentos referenciados.

Continentes{idcontinente=oc, continente=Oceania, planetas=[Planetas{idplaneta=tierra, planeta=Tierra}, Planetas{idplaneta=marte, planeta=Marte}]}

lazy= true (no buscar en documentos referenciados)

Solo devolverá el valor de los campos llaves referenciados, los demás atributos serán null.

Continentes{idcontinente=oc, continente=Oceania, planetas=[Planetas{idplaneta=tierra, planeta=null}, Planetas{idplaneta=marte, planeta=null}]}

Ejemplo de un documento @Referenced

Entity

@Getter
@Setter
public class Continentes {
@Id
private String idcontinente;
private String continente;
@Referenced(collection = "Planetas", field = "idplaneta",javatype="String", lazy = false,repository="com.avbravo.repository.PlanetasRepository")

private Planetas planetas;
}

Controller

Continentes continentes = new Continentes();
continentes.setIdcontinente("am");
continentes.setContinente("America");
Planetas planetas = new Planetas();
planetas.setIdplaneta("tr");
Planetas p1 = planetasRepository.findBy(planetas);
ontinentes.setPlanetas(p1);
if (continentesRepository.save(continentes)) { }

Documento Generado

Nota: Solo se almacena el valor del atributo relacionado, en el ejemplo idplaneta.

{ "_id" : ObjectId("587e73eba6cca93639449808"),
"idcontinente" : "am",
"continente" : "America",
"planetas" : {
"idplaneta" : "tr"
}
}

Listas Referenciadas

Una lista referenciada es una lista de documentos que solo se almacena la llave primaria y que son usadas como referencia para cargar automáticamente el contenido del documento referenciado.

Entity

@Getter
@Setter
public class Continentes {
@Id
private String idcontinente;
private String continente;
@Referenced(collection = "Planetas",field = "idplaneta",javatype="String",lazy=false, repository="com.avbravo.repository.PlanetasRepository")
private List<Planetas> planetas;
}

Controller

Continentes continentes = new Continentes();
continentes.setIdcontinente("am");
continentes.setContinente("America");
Planetas planetas = new Planetas();
planetas.setIdplaneta("tr");
Planetas p1 = planetasRepository.findBy(planetas);
Planetas p2 = planetasRepository.findById(new Document("idplaneta","mr");
Planetas p3 = planetasRepository.findById(new Document("idplaneta","jp");
List<Planetas> list = new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);
continentes.setPlanetas(list);
if (continentesRepository.save(continentes)) {
}

Documento Generado

{ "_id" : ObjectId("587e7747a6cca937ac6fb6bf"),
"idcontinente" : "am",
"continente" : "America",
"planetas" : [
{
"idplaneta" : "tr"
},
{
"idplaneta" : "mr"
},
{
"idplaneta" : "jp"
}
]
}

Listas de Objetos Java

Para definir listas de objetos Java no se utilizara ninguna anotación. Solo se declara List < >; de tipos de datos Java

(String, Integer, Double,etc)

Entity

@Getter
@Setter
public class Continentes {
@Id
private String idcontinente;
private String continente;
private List<String> ciudades;
}

Controller

Continentes continentes = new Continentes();
continentes.setIdcontinente("am");
continentes.setContinente("America");
List<String> list = new ArrayList<>();
list.add("Panama");
list.add("Los Santos");
continentes.setCiudades(list);
continentesRepository.save(continentes);

Documento

 {
"_id" : ObjectId("587ec427b2a08a14f778b0f1"),
"idcontinente" : "am",
"continente" : "America",
"ciudades" : [
"Panama",
"Los Santos"
]
}
PreviousEmbebido con List de ReferenciadoNextRepository MongoDB

Last updated 4 years ago

Was this helpful?