Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Códigos operacionais legados

Esta página descreve os opcodes legados que não são mais suportados pelo MongoDB. Esses opcodes legados são:

  • Obsoleto a partir do MongoDB 5.0.

  • Não suportado a partir do MongoDB 5.1.

A partir de MongoDB 5.1, OP_MSG e OP_COMPRESSED são os únicos opcodes suportados a enviar pedidos para um servidor MongoDB.

A mensagem OP_DELETE é usada para remover um ou mais documentos de uma coleção. O formato da mensagem OP_DELETE é:

struct {
MsgHeader header; // standard message header
int32 ZERO; // 0 - reserved for future use
cstring fullCollectionName; // "dbname.collectionname"
int32 flags; // bit values - see below for details.
document selector; // query object. See below for details.
}
Campo
Descrição

header

Cabeçalho da mensagem. Consulte Cabeçalho de mensagem padrão.

ZERO

Valor total de 0. Reservado para uso futuro.

fullCollectionName

O nome completo da coleção, especificamente seu namespace. O namespace é a concatenação do nome do banco de dados com o nome da coleção, utilizando um . para a concatenação. Por exemplo, para o banco de dados test e a coleção contacts, o namespace completo é test.contacts.

flags

Valores de bits para a operação: Os valores de bit correspondem ao seguinte:

  • 0 corresponde a SingleRemove. Se definido, o banco de dados removerá apenas o primeiro documento correspondente na coleção. Caso contrário, todos os documentos correspondentes serão removidos.

  • 1-31 estão reservados. Deve ser 0.

selector

Documento JSON que representa a query usada para selecionar os documentos a serem removidos. O seletor contém um ou mais elementos, todos os quais devem corresponder para que um documento seja removido da coleção.

Não há resposta a uma mensagem OP_DELETE.

A mensagem OP_GET_MORE é usada para executar query no banco de dados para documentos em uma coleção. O formato da mensagem OP_GET_MORE é:

struct {
MsgHeader header; // standard message header
int32 ZERO; // 0 - reserved for future use
cstring fullCollectionName; // "dbname.collectionname"
int32 numberToReturn; // number of documents to return
int64 cursorID; // cursorID from the OP_REPLY
}
Campo
Descrição

header

Cabeçalho da mensagem. Consulte Cabeçalho de mensagem padrão.

ZERO

Valor total de 0. Reservado para uso futuro.

fullCollectionName

O nome completo da coleção, especificamente seu namespace. O namespace é a concatenação do nome do banco de dados com o nome da coleção, utilizando um . para a concatenação. Por exemplo, para o banco de dados test e a coleção contacts, o namespace completo é test.contacts.

numberToReturn

Limits the number of documents in the first OP_REPLY message to the query. However, the database will still establish a cursor and return the cursorID to the client if there are more results than numberToReturn. If the client driver offers 'limit' functionality (like the SQL LIMIT keyword), then it is up to the client driver to ensure that no more than the specified number of document are returned to the calling application.

Se numberToReturn for:

  • 0, o banco de dados utiliza o tamanho de retorno padrão.

  • Negativo, o banco de dados retorna esse número e fecha o cursor. Nenhum resultado adicional para essa query pode ser obtido.

  • 1, o servidor tratará o valor como -1 (fechando o cursor automaticamente).

cursorID

Cursor identifier that came in the OP_REPLY. This must be the value that came from the database.

The database will respond to an OP_GET_MORE message with an OP_REPLY message.

A mensagem OP_INSERT é usada para inserir um ou mais documentos em uma coleção. O formato da mensagem OP_INSERT é:

struct {
MsgHeader header; // standard message header
int32 flags; // bit values - see below
cstring fullCollectionName; // "dbname.collectionname"
document* documents; // one or more documents to insert into the collection
}
Campo
Descrição

header

Cabeçalho da mensagem. Consulte Cabeçalho de mensagem padrão.

flags

Valores de bits para a operação: Os valores de bit correspondem ao seguinte:

  • 0 corresponde ao ContinueOnError. Se definido, o database não interromperá o processamento de uma bulk insert se alguma falhar (por exemplo, devido a IDs duplicados). Isso faz com que a inserção em massa se comporte de forma semelhante a uma série de inserções únicas, exceto lastError será definido se qualquer inserção falhar, não apenas a última. Se ocorrerem vários erros, apenas o mais recente será relatado por getLastError.

  • 1-31 estão reservados. Deve ser 0.

fullCollectionName

O nome completo da coleção, especificamente seu namespace. O namespace é a concatenação do nome do banco de dados com o nome da coleção, utilizando um . para a concatenação. Por exemplo, para o banco de dados test e a coleção contacts, o namespace completo é test.contacts.

documents

Um ou mais documentos para inserir na coleção. Se houver mais de um, eles serão gravados no soquete em sequência, um após o outro.

Não há resposta a uma mensagem OP_INSERT.

A mensagem OP_KILL_CURSORS é usada para fechar um cursor ativo no banco de dados. Isso é necessário para garantir que os recursos do banco de dados sejam recuperados no final da query. O formato da mensagem OP_KILL_CURSORS é:

struct {
MsgHeader header; // standard message header
int32 ZERO; // 0 - reserved for future use
int32 numberOfCursorIDs; // number of cursorIDs in message
int64* cursorIDs; // sequence of cursorIDs to close
}
Campo
Descrição

header

Cabeçalho da mensagem. Consulte Cabeçalho de mensagem padrão.

ZERO

Valor total de 0. Reservado para uso futuro.

numberOfCursorIDs

O número de ID de cursor que estão na mensagem.

cursorIDs

"Array" de IDs de cursor a serem fechadas. Se houver mais de um, eles serão gravados no soquete em sequência, um após o outro.

If a cursor is read until exhausted (read until OP_QUERY or OP_GET_MORE returns zero for the cursor id), there is no need to kill the cursor.

A mensagem OP_QUERY é usada para executar query do banco de dados para documentos em uma coleção. O formato da mensagem OP_QUERY é:

struct OP_QUERY {
MsgHeader header; // standard message header
int32 flags; // bit values of query options. See below for details.
cstring fullCollectionName ; // "dbname.collectionname"
int32 numberToSkip; // number of documents to skip
int32 numberToReturn; // number of documents to return
// in the first OP_REPLY batch
document query; // query object. See below for details.
[ document returnFieldsSelector; ] // Optional. Selector indicating the fields
// to return. See below for details.
}
Campo
Descrição

header

Cabeçalho da mensagem. Consulte Cabeçalho de mensagem padrão.

flags

Valores de bits para a operação: Os valores de bit correspondem ao seguinte:

  • 0 está reservado. Deve ser 0.

  • 1 corresponde ao TailableCursor. Significa que o cursor não está fechado quando os últimos dados são recuperados. Em vez disso, o cursor marca a posição do objeto final. Você pode continuar usando o cursor mais tarde, de onde ele estava localizado, se mais dados foram recebidos. Como qualquer cursor latente, o cursor pode se tornar inválido em algum momento (CursorNotFound) – por exemplo, se o objeto final ao qual ele faz referência foi excluído.

  • 2 corresponde ao SlaveOk. Permitir query de réplica escrava. Normalmente estes retornam um erro, exceto para o namespace "local".

  • 3 corresponde ao OplogReplay. Você não precisa especificar esse sinalizador porque a otimização acontece automaticamente para queries qualificadas no oplog. Consulte oplogReplay para mais informações.

  • 4 corresponde ao NoCursorTimeout. O servidor normalmente atinge o tempo limite dos cursores ociosos após um período de inatividade (10 minutos) para evitar o uso excessivo de memória. Defina esta opção para evitar isso.

  • 5 corresponde a AwaitData. Use com TailableCursor. Se o cursor estiver no final dos dados, bloqueie por um tempo em vez de não retornar nenhum dado. Após um período de tempo limite, o servidor retorna normalmente.

  • 6 corresponde à escape. Transmitir os dados de forma intensa em vários pacotes "mais", partindo do pressuposto de que o cliente lerá integralmente todos os dados consultados. Mais rápido quando você está extraindo muitos dados e sabe que deseja extrair tudo. Observação: o cliente não tem permissão para não ler todos os dados, a menos que feche a conexão.

  • 7 corresponde a Parcial. Obtenha resultados parciais de um mongo se alguns shards estiverem inativos (em vez de gerar um erro)

  • 8-31 estão reservados. Deve ser 0.

fullCollectionName

O nome completo da coleção, especificamente seu namespace. O namespace é a concatenação do nome do banco de dados com o nome da coleção, utilizando um . para a concatenação. Por exemplo, para o banco de dados test e a coleção contacts, o namespace completo é test.contacts.

numberToSkip

Define o número de documentos a serem omitidos, começando pelo primeiro documento no conjunto de dados resultante, ao retornar o resultado da query.

numberToReturn

Limits the number of documents in the first OP_REPLY message to the query. However, the database will still establish a cursor and return the cursorID to the client if there are more results than numberToReturn. If the client driver offers 'limit' functionality (like the SQL LIMIT keyword), then it is up to the client driver to ensure that no more than the specified number of document are returned to the calling application.

Se numberToReturn for:

  • 0, o banco de dados utiliza o tamanho de retorno padrão.

  • Negativo, o banco de dados retorna esse número e fecha o cursor. Nenhum resultado adicional para essa query pode ser obtido.

  • 1, o servidor tratará o valor como -1 (fechando o cursor automaticamente).

query

Documento JSON que representa a query. A query contém um ou mais elementos, todos os quais devem corresponder para que um documento seja incluído no conjunto de resultados. Os possíveis elementos incluem $query, $orderby, $hint e $explain.

returnFieldsSelector

Opcional. Documento JSON que limita os campos nos documentos devolvidos. O returnFieldsSelector contém um ou mais elementos, cada um dos quais é o nome de um campo que deve ser retornado e o valor inteiro 1. Na notação JSON, um returnFieldsSelector para limitar aos campos a, b e c seria:

{ a : 1, b : 1, c : 1}

O banco de dados responderá a uma mensagem OP_QUERY com uma mensagem OP_REPLY.

Observação

O MongoDB 5.1 remove o suporte para OP_QUERY operações de localização e comandos OP_QUERY. Como uma exceção, o OP_QUERY ainda é suportado para executar os comandos hello e isMaster como parte do handshake de conexão.

A mensagem OP_REPLY é enviada pelo banco de dados em resposta a uma mensagem OP_QUERY ou OP_GET_MORE. O formato de uma mensagem OP_REPLY é:

struct {
MsgHeader header; // standard message header
int32 responseFlags; // bit values - see details below
int64 cursorID; // cursor ID if client needs to do get more's
int32 startingFrom; // where in the cursor this reply is starting
int32 numberReturned; // number of documents in the reply
document* documents; // documents
}
Campo
Descrição

header

Cabeçalho da mensagem. Consulte Cabeçalho de mensagem padrão.

responseFlags

Valores de bits para a operação: Os valores de bit correspondem ao seguinte:

  • 0 corresponde ao CursorNotFound. É definido quando getMore é chamado, mas o ID do cursor não é válido no servidor. Retornado com zero resultados.

  • 1 corresponde a QueryFailure. É definido quando a query falha. Os resultados consistem em um documento contendo um campo "$err" descrevendo a falha.

  • 2 corresponde ao ShardConfigStale. Os drivers devem ignorar isso. Somente mongos verá esse conjunto; nesse caso, ele precisará atualizar a configuração do servidor.

  • 3 corresponde a AwaitCapable. É definido quando o servidor suporta a opção AwaitData Query. Caso contrário, o cliente deve dormir um pouco entre getMore de um cursor Tailable.

  • 4-31 estão reservados. Ignorar.

cursorID

The cursorID that this OP_REPLY is a part of. In the event that the result set of the query fits into one OP_REPLY message, cursorID will be 0. This cursorID must be used in any OP_GET_MORE messages used to get more data, and also must be closed by the client when no longer needed via a OP_KILL_CURSORS message.

startingFrom

Posição inicial no cursor.

numberReturned

Número de documentos na resposta.

documents

Documentos devolvidos.

A mensagem OP_UPDATE é usada para atualizar um documento em uma coleção. O formato de uma mensagem OP_UPDATE é o seguinte:

struct OP_UPDATE {
MsgHeader header; // standard message header
int32 ZERO; // 0 - reserved for future use
cstring fullCollectionName; // "dbname.collectionname"
int32 flags; // bit values. see below
document selector; // the query to select the document
document update; // specification of the update to perform
}
Campo
Descrição

header

Cabeçalho da mensagem. Consulte Cabeçalho de mensagem padrão.

ZERO

Valor total de 0. Reservado para uso futuro.

fullCollectionName

O nome completo da coleção, especificamente seu namespace. O namespace é a concatenação do nome do banco de dados com o nome da coleção, utilizando um . para a concatenação. Por exemplo, para o banco de dados test e a coleção contacts, o namespace completo é test.contacts.

flags

Valores de bits para a operação: Os valores de bit correspondem ao seguinte:

  • 0 corresponde ao Upsert. Se definido, o banco de dados inserirá o objeto fornecido na coleção se nenhum documento correspondente for encontrado.

  • 1 corresponde a MultiUpdate.Se configurado, o banco de dados atualizará todos os objetos correspondentes na coleção. Caso contrário, apenas atualiza o primeiro documento correspondente.

  • 2-31 estão reservados. Deve ser 0.

selector

Documento JSON que especifica a query para seleção do documento a ser atualizado.

update

Documento JSON que especifica a atualização a ser executada. Para obter informações sobre como especificar atualizações, consulte a documentação das Operações de Atualização.

Não há resposta a uma mensagem OP_UPDATE.