relações MongoDB
relacionamento MongoDB expressa interligações entre vários documentos em lógica.
Você pode estabelecer contato por incorporação e referências entre documentos.
A relação pode ser MongoDB:
- 1: 1 (1-1)
- 1: N (1-muitos)
- N: 1 (vários pares 1)
- N: N (muitos para muitos)
Em seguida, consideramos a relação entre o usuário eo endereço do usuário seguinte.
Um usuário pode ter vários endereços, é um para muitos relação.
O que se segue é um documento de configuração de usuário simples:
{ "_id":ObjectId("52ffc33cd85242f436000001"), "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991" }
O que se segue é um documento endereço estrutura simples:
{ "_id":ObjectId("52ffc4a5d85242602e000000"), "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }
relações embutidos
Usando o método incorporado, podemos incorporar o endereço do usuário para documentos do usuário:
"_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address": [ { "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }, { "building": "170 A, Acropolis Apt", "pincode": 456789, "city": "Chicago", "state": "Illinois" }] }
Os dados acima são armazenados em um único documento, você pode acessar mais facilmente e manter dados. Você pode consultar o endereço do usuário:
>db.users.findOne({"name":"Tom Benzamin"},{"address":1})
Nota: Odb consulta acima indica banco de dados e usuáriose coleções.
A desvantagem desta estrutura de dados é que, se os usuários e enfrentar a crescente quantidade de dados torna-se maior e maior, vai afetar a ler e escrever desempenho.
relação de tipo de referência
relação de tipo de referência é frequentemente utilizado na abordagem de design de banco de dados que os arquivos de dados do usuário e arquivo de dados de endereço do usuário separadamente para construir relacionamentos de documento de referência campoid.
{ "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [ ObjectId("52ffc4a5d85242602e000000"), ObjectId("52ffc4a5d85242602e000001") ] }
Oexemplo acima, documento address_ids que contém o campo de objeto do ID do usuário do array de endereço do usuário (ObjectId).
Podemos ler esses objetos ID de endereço do usuário (ObjectId) para obter informações detalhadas sobre o endereço do usuário.
Este método requer duas consultas, endereço do primeiro usuário ID de objeto de consulta (ObjectId), o segundo endereço para mais informações sobre a consulta do usuário por id.
>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1}) >var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})