2. Criação e validação da coleção

Na filosofia do MongoDB cada registro é um documento completo, contendo todas as suas informações, especificadas na forma de um campo e um valor para cada informação.

Desta forma, as informações de uma página do WordPress vão todas para o mesmo documento, mesmo que estejam contidas em várias tabelas no MySQL. Por sua vez, os documentos estão contidos em coleções, que estão contidas em banco de dados.

A coleção recebeu o nome de pages, porque contém as páginas do WordPress. No comando de criação da coleção também foram especificadas as regras de validação, conforme mostrado abaixo:

// Criar a coleção pages especificando as regras de validação do esquema JSON 
db.createCollection("pages", {
   validator: {
      $jsonSchema: {
         bsonType: "object",
         required: [ "id", "title", "date", "content", "excerpt", "slug" ],
         properties: {
            id: {
               bsonType: "int",
               description: "identificador da página"
            },
            title: {
               bsonType: "string",
               description: "título da página"
            },
            date: {
               bsonType: "string",
               description: "data de criação da página (string)"
            },
            pagedate: {
               bsonType: "date",
               description: "data de criação da página (date)"
            },
            content: {
               bsonType: "string",
               description: "conteúdo da página"
            },
            excerpt: {
               bsonType: "string",
               description: "início da página"
            },
            slug: {
               bsonType: "string",
               description: "slug da página"
            },
            thumb: {
               bsonType: "string",
               description: "imagem da página"
            },
            ancestors: {
               bsonType: "array",
               description: "páginas ancestrais (hierarquicamente acima)"
            },
            coordinates: {
               bsonType: "array",
               description: "coordenadas da página"
            },
            geometry: {
               bsonType: "object",
               description: "geometria da página"
            },
         }
      }
   }
}, { collation: { locale: "pt", strength: 1 } } );

Execução destes comandos na shell do MongoDB:

> // Criar a coleção pages especificando as regras de validação do esquema JSON
> db.createCollection("pages", {
...    validator: {
...       $jsonSchema: {
...          bsonType: "object",
...          required: [ "id", "title", "date", "content", "excerpt", "slug" ],
...          properties: {
...             id: {
...                bsonType: "int",
...                description: "identificador da página"
...             },
...             title: {
...                bsonType: "string",
...                description: "título da página"
...             },
...             date: {
...                bsonType: "string",
...                description: "data de criação da página (string)"
...             },
...             pagedate: {
...                bsonType: "date",
...                description: "data de criação da página (date)"
...             },
...             content: {
...                bsonType: "string",
...                description: "conteúdo da página"
...             },
...             excerpt: {
...                bsonType: "string",
...                description: "início da página"
...             },
...             slug: {
...                bsonType: "string",
...                description: "slug da página"
...             },
...             thumb: {
...                bsonType: "string",
...                description: "imagem da página"
...             },
...             ancestors: {
...                bsonType: "array",
...                description: "páginas ancestrais (hierarquicamente acima)"
...             },
...             coordinates: {
...                bsonType: "array",
...                description: "coordenadas da página"
...             },
...             geometry: {
...                bsonType: "object",
...                description: "geometria da página"
...             },
...          }
...       }
...    }
... }, { collation: { locale: "pt", strength: 1 } } );
{ "ok" : 1 }
>

Nota: A finalidade do parâmetro strength: 1 é especificar que não haja distinção entre letras maiúsculas, minúsculas ou acentuadas nesta coleção.

Integração do WordPress com o MongoDB