Latest web development tutorials

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