Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

CollMod

Nesta página

  • Definição
  • Opções
  • Controle de acesso
  • Comportamento
  • Exemplos
collMod

collMod torna possível adicionar opções a uma collection ou modificar definições de visualização.

Dica

No mongosh, este comando também pode ser executado através dos métodos de ajuda do hideIndex() e unhideIndex() .

Os métodos auxiliares são práticos para os usuários mongosh, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.

Observação

A visualização modificada por este comando não se refere a visualizações materializadas. Para discussão sobre visualizações materializadas sob demanda, consulte $merge .

O comando usa a seguinte forma de protótipo:

Observação

Começando no MongoDB 4.2

  • As opções noPadding e usePowerOf2Sizes MMAPv1 para o comando collMod são removidas.

  • A definição de visualização pipeline não pode incluir o estágio $out ou $merge . Se a definição de visualização incluir o pipeline aninhado (por exemplo, a definição de visualização incluir o estágio $lookup ou $facet ), essa restrição também se aplicará aos pipelines aninhados.

db.runCommand( { collMod: <collection or view>, <option1>: <value1>, <option2>: <value2> ... } )

Para o <collection or view>, especifique o nome de uma collection ou visualização no banco de dados atual.

index

A opção index pode alterar as seguintes propriedades de um índice existente :

Propriedade do Índice
Descrição
expireAfterSeconds

O número de segundos que determina o limite de expiração de uma collection TTL.

Se for bem-sucedido, o comando retornará um documento que contém os valores antigo e novo da propriedade alterada: expireAfterSeconds_old e expireAfterSeconds_new.

Você só pode modificar um índice TTL existente; ou seja, um índice com uma propriedade expireAfterSeconds existente. Se o índice não tiver uma propriedade expireAfterSeconds existente, a operação será interrompida com no expireAfterSeconds field to update.

A modificação da opção de índice expireAfterSeconds redefine o $indexStats para o índice.

Se você usa índices TTL criados antes do MongoDB 5.0 ou se deseja sincronizar dados criados no MongDB 5.0 com um pré-5.0 instalação, consulte Índices configurados usando NaN para evitar problemas de configuração incorreta.

O valor expireAfterSeconds do índice TTL deve estar dentro de 0 e 2147483647 inclusive.

hidden

Um booleano que determina se o índice é oculto ou não do planejador de query.

Se o valor hidden for alterado, o comando retornará um documento contendo os valores antigo e novo da propriedade alterada: hidden_old e hidden_new.

No entanto, se o valor de hidden não tiver mudado (ou seja, ocultando um índice já oculto ou ocultando um índice já oculto), o comando emite os campos hidden_old e hidden_new da saída.

Para ocultar um índice, você deve ter featureCompatibilityVersion configurado para 4.4 ou superior.

Modificar a opção de índice hidden redefine o $indexStats do índice se o valor for alterado.

Para alterar as opções de índice, especifique o padrão de chave ou o nome do índice existente e a opção ou opções de índice que você deseja alterar:

db.runCommand( {
collMod: <collection>,
index: {
keyPattern: <index_spec> || name: <index_name>,
expireAfterSeconds: <number>, // If changing the TTL expiration threshold
hidden: <boolean> // If changing the visibility of the index from the query planner
}
} )

Se o índice não existir, os erros de comando com a mensagem "cannot find index <name|keyPattern> for ns <db.collection>".

validator

Novo na versão 3.2.

validator permite que os usuários especifiquem expressões ou regras de validação para uma collection. Para obter mais informações, consulte Validação de esquema.

A opção validator requer um documento que especifica as regras ou expressões de validação. Você pode especificar as expressões usando os mesmos operadores que os operadores de consulta, com exceção de $near, $nearSphere, $text e $where.

Observação

  • A validação ocorre durante atualizações e inserções. Os documentos existentes não passam por verificações de validação até a modificação.

  • Você não pode especificar um validador para collections nos bancos de dados admin, local e config.

  • Você não pode especificar um validador para collections system.* .

validationLevel

Novo na versão 3.2.

O validationLevel determina quão rigorosamente o MongoDB aplica as regras de validação aos documentos existentes durante uma atualização.

validationLevel
Descrição
"off"
Nenhuma validação para inserções ou atualizações.
"strict"
Padrão Aplique regras de validação a todas as inserções e todas as atualizações.
"moderate"
Aplique regras de validação a inserções e atualizações em documentos válidos existentes. Não aplique regras a atualizações em documentos inválidos existentes.
validationAction

Novo na versão 3.2.

A opção validationAction determina se error em documentos inválidos ou apenas warn sobre as violações, mas permite documentos inválidos.

Importante

A validação de documentos só se aplica aos documentos como determinado pelo validationLevel.

validationAction
Descrição
"error"
Padrão Os documentos devem passar por validação antes que a gravação ocorra. Caso contrário, a operação de gravação falhará.
"warn"
Os documentos não precisam passar pela validação. Se o documento falhar na validação, a operação de gravação registrará a falha na validação.

Para visualizar as especificações de validação de uma coleção, utilize o método db.getCollectionInfos() .

Observação

A visualização modificada por este comando não se refere a visualizações materializadas. Para discussão sobre visualizações materializadas sob demanda, consulte $merge .

viewOn

A collection de origem subjacente ou visualizar para o modo de exibição. A definição de exibição é determinada aplicando o pipeline especificado a essa fonte.

Obrigatório ao modificar uma visualização em uma MongoDB deployment que está sendo executada com controle de acesso.

pipeline

O aggregation pipeline que define a visualização.

Observação

A definição de visualização pipeline não pode incluir o estágio $out ou $merge . Se a definição de visualização incluir o pipeline aninhado (por exemplo, a definição de visualização incluir o estágio $lookup ou $facet ), essa restrição também se aplicará aos pipelines aninhados.

Obrigatório ao modificar uma visualização em uma MongoDB deployment que está sendo executada com controle de acesso.

A definição da visualização é pública; ou seja, as operações db.getCollectionInfos() e explain na exibição incluirão o pipeline que define a visualização. Dessa forma, evite se referir diretamente a campos e valores confidenciais nas definições de visualização.

db.runCommand( {
collMod: "myView",
viewOn: "activities",
pipeline: [
{ $match: { status: "Q" } },
{ $project: { user: 1, date: 1, description: 1} } ]
} )

Para ativar a remoção automática de documentos ou alterar o valor do parâmetro expireAfterSeconds para uma coleção de séries temporais existente, emita o seguinte comando collMod :

db.runCommand({
collMod: <collection>,
expireAfterSeconds: <Number> || "off"
})

O campo expireAfterSeconds deve ser um dos seguintes:

  • Um número decimal não negativo (>=0)

  • A string "off".

Um número especifica o número de segundos após os quais os documentos expiram. A string "off" remove o parâmetro expireAfterSeconds e desabilita a remoção automática.

comment

Opcional. Você pode anexar um comentário a este comando. O comentário deve ser um campo de nível superior e pode ser qualquer tipo JSON válido. O comentário que você especifica aparece ao lado dos registros deste comando nos seguintes locais:

w

Opcional. Um documento que expressa a write concern do comando collMod.

Omitir para usar a write concern.

Se a implantação impuser autenticação/autorização, você deverá ter o seguinte privilégio para executar o comando collMod :

Tarefa
Privilégios necessários
Modificar uma non-capped collection
collMod no banco de dados
Modificar uma visualização

collMod no banco de dados e:

  • nenhum find na visualização para modificar, ou

  • ambos find na visualização a ser modificada e find na collection/visualização de origem.

A função embutida dbAdmin fornece os privilégios exigidos.

O comando collMod obtém uma trava de coleção na coleção especificada durante a operação.

O exemplo seguinte atualiza a propriedade expireAfterSeconds de um índice TTL { lastAccess: 1 } existente em uma collection denominada user_log. A propriedade expireAfterSeconds atual do índice está definida para 1800 segundos (ou 30 minutos) e o exemplo altera o valor para 3600 segundos (ou 60 minutos).

db.runCommand({
collMod: "user_log",
index: {
keyPattern: { lastAccess: 1 },
expireAfterSeconds: 3600
}
})

Se a operação for bem-sucedida, a operação retornará um documento que inclui o valor antigo e o novo para a propriedade alterada:

{ "expireAfterSeconds_old" : 1800, "expireAfterSeconds_new" : 3600, "ok" : 1 }

Observação

Para ocultar um índice, você deve ter featureCompatibilityVersion configurado para 5.0 ou superior.

O exemplo a seguir oculta um índice existente na collection orders. Especificamente, a operação oculta o índice com a especificação { shippedDate: 1 } do planejador de query.

db.runCommand({
collMod: "orders",
index: {
keyPattern: { shippedDate: 1 },
hidden: true
}
})

Se a operação for bem-sucedida, a operação retornará um documento que inclui o valor antigo e o novo para a propriedade alterada:

{ "hidden_old" : false, "hidden_new" : true, "ok" : 1 }

Observação

Se a operação for bem-sucedida, mas o valor hidden não tiver sido alterado (ou seja, ocultando um índice já oculto ou ocultando um índice já oculto), o comando emite os campos hidden_old e hidden_new da saída.

Para ocultar um índice de texto, você deve especificar o índice por name e não por keyPattern.

O exemplo a seguir adiciona um validador a uma coleção existente chamada contacts.

Observação

O MongoDB 3.6 adiciona o operador $jsonSchema para dar suporte à validação do JSON schema.

db.runCommand( { collMod: "contacts",
validator: { $jsonSchema: {
bsonType: "object",
required: [ "phone" ],
properties: {
phone: {
bsonType: "string",
description: "must be a string and is required"
},
email: {
bsonType : "string",
pattern : "@mongodb\.com$",
description: "must be a string and match the regular expression pattern"
},
status: {
enum: [ "Unknown", "Incomplete" ],
description: "can only be one of the enum values"
}
}
} },
validationLevel: "moderate",
validationAction: "warn"
} )

Com o moderate validationLevel, o MongoDB aplica regras de validação para inserir operações e atualizar operações em documentos existentes que já atendem aos critérios de validação. As atualizações de documentos existentes que não atendem aos critérios de validação não são verificadas quanto à validade.

Com o warn validationAction, o MongoDB registra quaisquer violações, mas permite que a inserção ou atualização continue.

Por exemplo, a seguinte operação de inserção viola a regra de validação.

db.contacts.insertOne( { name: "Amanda", status: "Updated" } )

No entanto, como validationAction é apenas warn , o MongoDB registra apenas a mensagem de violação de validação e permite que a operação continue:

2017-12-01T12:31:23.738-05:00 W STORAGE [conn1] Document would fail validation collection: example.contacts doc: { _id: ObjectId('5a2191ebacbbfc2bdc4dcffc'), name: "Amanda", status: "Updated" }

Para obter mais informações, consulte Validação de esquema.

Voltar

cloneCollectionAsCapped

Próximo

compactar