Consultar dados usando o Azure Cosmos DB para MongoDB

Aplica-se a: MongoDB

Importante

Você está procurando migrar um aplicativo MongoDB existente ou usar os recursos MQL (MongoDB Query Language)? Considere Azure DocumentDB.

Você está procurando uma solução de banco de dados para cenários de alta escala com um contrato de nível de serviço (SLA) de disponibilidade de 99.999%, dimensionamento automático instantâneo e failover automático em várias regiões? Considere Azure Cosmos DB para NoSQL.

O Azure Cosmos DB para MongoDB dá suporte a consultas MongoDB.

Este artigo abrange as seguintes tarefas:

  • Consultando dados armazenados em seu banco de dados do Azure Cosmos DB usando o shell do MongoDB

Você pode começar usando os exemplos neste artigo.

Exemplo de documento

As consultas neste artigo utilizam o documento de exemplo seguinte.

{
  "id": "WakefieldFamily",
  "parents": [
      { "familyName": "Wakefield", "givenName": "Robin" },
      { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
      {
        "familyName": "Merriam", 
        "givenName": "Jesse", 
        "gender": "female", "grade": 1,
        "pets": [
            { "givenName": "Goofy" },
            { "givenName": "Shadow" }
        ]
      },
      { 
        "familyName": "Miller", 
         "givenName": "Lisa", 
         "gender": "female", 
         "grade": 8 }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

Consulta de exemplo 1

Dado o exemplo de documento familiar, a consulta seguinte retorna os documentos em que o campo id corresponde a WakefieldFamily.

Consulta:

db.families.find({ id: "WakefieldFamily"})

Resultados:

{
    "_id": "ObjectId(\"58f65e1198f3a12c7090e68c\")",
    "id": "WakefieldFamily",
    "parents": [
      {
        "familyName": "Wakefield",
        "givenName": "Robin"
      },
      {
        "familyName": "Miller",
        "givenName": "Ben"
      }
    ],
    "children": [
      {
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
        ]
      },
      {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
      }
    ],
    "address": {
      "state": "NY",
      "county": "Manhattan",
      "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

Consulta de exemplo 2

A seguinte consulta devolve todos os filhos na família.

Consulta:

db.families.find( { id: "WakefieldFamily" }, { children: true } )

Resultados:

{
    "_id": "ObjectId("58f65e1198f3a12c7090e68c")",
    "children": [
      {
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
        ]
      },
      {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
      }
    ]
}

Consulta de exemplo 3

A consulta seguinte devolve todas as famílias que estão registadas.

Consulta:

db.families.find( { "isRegistered" : true })

Resultados:

Nenhum documento é devolvido.

Consulta de exemplo 4

A próxima consulta retorna todas as famílias que não estão registradas.

Consulta:

db.families.find( { "isRegistered" : false })

Resultados:

{
    "_id": ObjectId("58f65e1198f3a12c7090e68c"),
    "id": "WakefieldFamily",
    "parents": [{
        "familyName": "Wakefield",
        "givenName": "Robin"
    }, {
        "familyName": "Miller",
        "givenName": "Ben"
    }],
    "children": [{
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [{
            "givenName": "Goofy"
        }, {
            "givenName": "Shadow"
        }]
    }, {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
    }],
    "address": {
        "state": "NY",
        "county": "Manhattan",
        "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

Consulta de exemplo 5

A próxima consulta retorna todas as famílias que não estão registradas e o estado é NY.

Consulta:

db.families.find( { "isRegistered" : false, "address.state" : "NY" })

Resultados:

{
    "_id": ObjectId("58f65e1198f3a12c7090e68c"),
    "id": "WakefieldFamily",
    "parents": [{
        "familyName": "Wakefield",
        "givenName": "Robin"
    }, {
        "familyName": "Miller",
        "givenName": "Ben"
    }],
    "children": [{
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [{
            "givenName": "Goofy"
        }, {
            "givenName": "Shadow"
        }]
    }, {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
    }],
    "address": {
        "state": "NY",
        "county": "Manhattan",
        "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

Consulta de exemplo 6

A consulta seguinte devolve todas as famílias em que as notas dos filhos são 8.

Consulta:

db.families.find( { children : { $elemMatch: { grade : 8 }} } )

Resultados:

{
    "_id": ObjectId("58f65e1198f3a12c7090e68c"),
    "id": "WakefieldFamily",
    "parents": [{
        "familyName": "Wakefield",
        "givenName": "Robin"
    }, {
        "familyName": "Miller",
        "givenName": "Ben"
    }],
    "children": [{
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [{
            "givenName": "Goofy"
        }, {
            "givenName": "Shadow"
        }]
    }, {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
    }],
    "address": {
        "state": "NY",
        "county": "Manhattan",
        "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

Consulta de exemplo 7

A consulta seguinte devolve todas as famílias em que o tamanho da matriz de crianças é 3.

Consulta:

db.Family.find( {children: { $size:3} } )

Resultados:

Nenhum resultado é devolvido porque não há famílias com mais de dois filhos. Somente quando o valor do parâmetro é 2 que essa consulta é bem-sucedida e retorna o documento completo.

Passos seguintes

Neste tutorial, realizaste as seguintes tarefas:

  • Aprendeu como consultar usando o Azure Cosmos DB para MongoDB

Agora pode avançar para o tutorial seguinte para saber como distribuir dados globalmente.