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 .
OP_DELETE
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:
|
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.
OP_GET_MORE
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 | Limita o número de documentos na primeira mensagem OP_REPLY à query. No entanto, o banco de dados ainda estabelecerá um cursor e retornará o Se
|
cursorID | Identificador do cursor que veio em OP_REPLY. Este deve ser o valor que veio do banco de dados. |
O banco de dados responderá a uma mensagem OP_GET_MORE com uma mensagem OP_REPLY.
OP_INSERT
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:
|
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.
OP_KILL_CURSORS
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. |
Se um cursor for lido até esgotar (leia até OP_QUERY ou OP_GET_MORE retornar zero para o ID do cursor), não será necessário matar o cursor.
OP_QUERY
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:
| |
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 | Limita o número de documentos na primeira mensagem OP_REPLY à query. No entanto, o banco de dados ainda estabelecerá um cursor e retornará o Se
| |
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
|
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.
OP_REPLY
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:
|
cursorID | O cursorID do qual este OP_REPLY faz parte. Caso o conjunto de resultados da query se encaixe em uma mensagem OP_REPLY, cursorID será 0. Este cursorID deve ser usado em qualquer mensagem OP_GET_MORE usada para obter mais dados e também deve ser fechado pelo cliente quando não for mais necessário por meio de uma mensagem OP_KILL_CURSORS . |
startingFrom | Posição inicial no cursor. |
numberReturned | Número de documentos na resposta. |
documents | Documentos devolvidos. |
OP_UPDATE
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:
|
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.