Docs Menu
Docs Home
/ /
Protocolo de conexión

Códigos de operación heredados

Esta página describe los códigos de operación heredados que MongoDB ya no admite. Estos códigos de operación heredados son:

  • Obsoleto a partir de MongoDB 5.0.

  • No compatible a partir de MongoDB 5.1.

A partir de MongoDB 5.1, OP_MSG y OP_COMPRESSED son los únicos códigos de operación compatibles para enviar solicitudes a un servidor MongoDB.

El mensaje OP_DELETE se utiliza para eliminar uno o más documentos de una colección. Su formato es:

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
Descripción

header

Encabezado del mensaje. Véase Encabezado del mensaje estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

fullCollectionName

El nombre completo de la colección, específicamente su espacio de nombres. El espacio de nombres es la concatenación del nombre de la base de datos con el nombre de la colección, utilizando un . para la concatenación. Por ejemplo, para la base de datos test y la colección contacts, el nombre completo de la colección es test.contacts.

flags

Valores de bits para la operación: Los valores de bits corresponden a lo siguiente:

  • 0 Corresponde a SingleRemove. Si se configura, la base de datos eliminará solo el primer documento coincidente de la colección. De lo contrario, se eliminarán todos los documentos coincidentes.

  • 1-31 están reservados. Debe establecerse en 0.

selector

Documento BSON que representa la consulta utilizada para seleccionar los documentos que se eliminarán. El selector contiene uno o más elementos, todos los cuales deben coincidir para que un documento se elimine de la colección.

No hay respuesta a un mensaje OP_DELETE.

El mensaje OP_GET_MORE se utiliza para consultar la base de datos en busca de documentos de una colección. Su formato es:

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
Descripción

header

Encabezado del mensaje. Véase Encabezado del mensaje estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

fullCollectionName

El nombre completo de la colección, específicamente su espacio de nombres. El espacio de nombres es la concatenación del nombre de la base de datos con el nombre de la colección, utilizando un . para la concatenación. Por ejemplo, para la base de datos test y la colección contacts, el nombre completo de la colección es test.contacts.

numberToReturn

Limita el número de documentos en el primer mensaje OP_REPLY de la consulta. Sin embargo, la base de datos establecerá un cursor y devolverá cursorID al cliente si hay más resultados numberToReturn que. Si el controlador del cliente ofrece la función "limit" (como la palabra clave SQL LIMIT), es responsabilidad del controlador garantizar que no se devuelva a la aplicación que realiza la llamada más del número especificado de documentos.

Si numberToReturn es:

  • 0, la base de datos utiliza el tamaño de retorno predeterminado.

  • Negativo: la base de datos devuelve ese número y cierra el cursor. No se pueden obtener más resultados para esa consulta.

  • 1, el servidor tratará el valor como -1 (cerrando el cursor automáticamente).

cursorID

Identificador del cursor incluido en OP_REPLY. Debe ser el valor de la base de datos.

La base de datos responderá a un mensaje OP_GET_MORE con un mensaje OP_REPLY.

El mensaje OP_INSERT se utiliza para insertar uno o más documentos en una colección. Su formato es:

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
Descripción

header

Encabezado del mensaje. Véase Encabezado del mensaje estándar.

flags

Valores de bits para la operación: Los valores de bits corresponden a lo siguiente:

  • 0 Corresponde a ContinueOnError. Si se configura, la base de datos no detendrá el procesamiento de una inserción masiva si falla una (por ejemplo, debido a IDs duplicados). Esto hace que la inserción masiva se comporte de forma similar a una serie de inserciones individuales, excepto que se activará lastError si falla cualquier inserción, no solo la última. Si se producen varios errores, getLastError solo informará del más reciente.

  • 1-31 están reservados. Debe establecerse en 0.

fullCollectionName

El nombre completo de la colección, específicamente su espacio de nombres. El espacio de nombres es la concatenación del nombre de la base de datos con el nombre de la colección, utilizando un . para la concatenación. Por ejemplo, para la base de datos test y la colección contacts, el nombre completo de la colección es test.contacts.

documents

Uno o más documentos para insertar en la colección. Si hay más de uno, se escriben en el socket secuencialmente, uno tras otro.

No hay respuesta a un mensaje OP_INSERT.

El mensaje OP_KILL_CURSORS se utiliza para cerrar un cursor activo en la base de datos. Esto es necesario para garantizar que los recursos de la base de datos se recuperen al final de la consulta. El formato del mensaje OP_KILL_CURSORS es:

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
Descripción

header

Encabezado del mensaje. Véase Encabezado del mensaje estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

numberOfCursorIDs

La cantidad de identificaciones de cursor que hay en el mensaje.

cursorIDs

Matriz de IDs de cursor que se cerrarán. Si hay más de uno, se escriben en el socket secuencialmente, uno tras otro.

Si se lee un cursor hasta agotarlo (se lee hasta que OP_QUERY u OP_GET_MORE devuelve cero para el ID del cursor), no es necesario matar el cursor.

El mensaje OP_QUERY se utiliza para consultar la base de datos de documentos de una colección. Su formato es:

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
Descripción

header

Encabezado del mensaje. Véase Encabezado del mensaje estándar.

flags

Valores de bits para la operación: Los valores de bits corresponden a lo siguiente:

  • 0 Está reservado. Debe establecerse en 0.

  • 1 Corresponde a TailableCursor. Tailable significa que el cursor no se cierra al recuperar los últimos datos. En su lugar, el cursor marca la posición del objeto final. Puede reanudar su uso más tarde, desde donde se encontraba, si se recibieron más datos. Como cualquier cursor latente, puede volverse inválido en algún momento (CursorNotFound), por ejemplo, si se eliminó el objeto final al que hace referencia.

  • 2 Corresponde a SlaveOk. Permite la consulta del esclavo de réplica. Normalmente, estos devuelven un error, excepto para el espacio de nombres "local".

  • 3 Corresponde a OplogReplay. No es necesario especificar esta opción, ya que la optimización se realiza automáticamente para las consultas válidas en el registro de operaciones. Consulte oplogReplay para obtener más información.

  • 4 Corresponde a NoCursorTimeout. El servidor normalmente desconecta los cursores inactivos tras un periodo de inactividad (10 minutos) para evitar el uso excesivo de memoria. Configure esta opción para evitarlo.

  • 5 Corresponde a AwaitData. Se usa con TailableCursor. Si el cursor está al final de los datos, se bloquea durante un tiempo en lugar de no devolver ningún dato. Tras un tiempo de espera, el servidor regresa con normalidad.

  • 6 Corresponde a Exhaust. Transmite los datos a toda velocidad en varios paquetes "más", asumiendo que el cliente leerá todos los datos consultados. Es más rápido cuando se extraen muchos datos y se sabe que se desea descargarlos todos. Nota: El cliente no puede dejar de leer todos los datos a menos que cierre la conexión.

  • 7 Corresponde a Parcial. Obtener resultados parciales de Mongos si algunos fragmentos están inactivos (en lugar de generar un error).

  • 8-31 están reservados. Debe establecerse en 0.

fullCollectionName

El nombre completo de la colección, específicamente su espacio de nombres. El espacio de nombres es la concatenación del nombre de la base de datos con el nombre de la colección, utilizando un . para la concatenación. Por ejemplo, para la base de datos test y la colección contacts, el nombre completo de la colección es test.contacts.

numberToSkip

Establece la cantidad de documentos que se deben omitir (comenzando por el primer documento del conjunto de datos resultante) al devolver el resultado de la consulta.

numberToReturn

Limita el número de documentos en el primer mensaje OP_REPLY de la consulta. Sin embargo, la base de datos establecerá un cursor y devolverá cursorID al cliente si hay más resultados numberToReturn que. Si el controlador del cliente ofrece la función "limit" (como la palabra clave SQL LIMIT), es responsabilidad del controlador garantizar que no se devuelva a la aplicación que realiza la llamada más del número especificado de documentos.

Si numberToReturn es:

  • 0, la base de datos utiliza el tamaño de retorno predeterminado.

  • Negativo: la base de datos devuelve ese número y cierra el cursor. No se pueden obtener más resultados para esa consulta.

  • 1, el servidor tratará el valor como -1 (cerrando el cursor automáticamente).

query

Documento BSON que representa la consulta. La consulta contiene uno o más elementos, todos los cuales deben coincidir para que un documento se incluya en el conjunto de resultados. Los elementos posibles incluyen $query, $orderby, $hint y $explain.

returnFieldsSelector

Opcional. Documento BSON que limita los campos en los documentos devueltos. El returnFieldsSelector contiene uno o más elementos, cada uno de los cuales es el nombre de un campo que debe devolverse y el valor entero 1. En notación JSON, un returnFieldsSelector para limitar a los campos a, b y c sería:

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

La base de datos responderá a un mensaje OP_QUERY con un mensaje OP_REPLY.

Nota

MongoDB 5.1 remueve el soporte para ambas operaciones de búsqueda OP_QUERY y comandos OP_QUERY. Como excepción, OP_QUERY sigue siendo compatible para ejecutar los comandos hello y isMaster como parte del protocolo de enlace de conexión.

La base de datos envía el mensaje en respuesta OP_REPLY a un mensaje OP_QUERY u OP_GET_MORE. El formato de un mensaje OP_REPLY es:

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
Descripción

header

Encabezado del mensaje. Véase Encabezado del mensaje estándar.

responseFlags

Valores de bits para la operación: Los valores de bits corresponden a lo siguiente:

  • 0 Corresponde a CursorNotFound. Se activa cuando se llama a getMore, pero el ID del cursor no es válido en el servidor. Se devuelve cero resultados.

  • 1 Corresponde a QueryFailure. Se activa cuando la consulta falla. Los resultados consisten en un documento que contiene un campo "$err" que describe el fallo.

  • 2 对应于 ShardConfigStale。 Los controladores deben ignorar esto. 仅 mongos 会看到此设置,这种情况下,它需要从 el servidor actualizar configuración。

  • 3 Corresponde a AwaitCapable. Se activa cuando el servidor admite la opción de consulta AwaitData. De lo contrario, el cliente debería esperar un tiempo entre los getMore de un cursor Tailable.

  • 4-31 están reservados. Ignorar.

cursorID

El cursorID del que forma parte esta OP_REPLY. Si el conjunto de resultados de la consulta cabe en un solo mensaje OP_REPLY, cursorID 0será. Este cursorID debe usarse en cualquier mensaje OP_GET_MORE para obtener más datos y el cliente también debe cerrarlo mediante un mensaje OP_KILL_CURSORS cuando ya no lo necesite.

startingFrom

Posición inicial en el cursor.

numberReturned

Número de documentos en la respuesta.

documents

Documentos devueltos.

El mensaje OP_UPDATE se utiliza para actualizar un documento de una colección. Su formato es el siguiente:

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
Descripción

header

Encabezado del mensaje. Véase Encabezado del mensaje estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

fullCollectionName

El nombre completo de la colección, específicamente su espacio de nombres. El espacio de nombres es la concatenación del nombre de la base de datos con el nombre de la colección, utilizando un . para la concatenación. Por ejemplo, para la base de datos test y la colección contacts, el nombre completo de la colección es test.contacts.

flags

Valores de bits para la operación: Los valores de bits corresponden a lo siguiente:

  • 0 Corresponde a Upsert. Si se configura, la base de datos insertará el objeto proporcionado en la colección si no se encuentra ningún documento coincidente.

  • 1 Corresponde a MultiUpdate. Si se configura, la base de datos actualizará todos los objetos coincidentes de la colección. De lo contrario, solo actualizará el primer documento coincidente.

  • 2-31 están reservados. Debe establecerse en 0.

selector

Documento BSON que especifica la consulta para la selección del documento a actualizar.

update

Documento BSON que especifica la actualización a realizar. Para obtener información sobre cómo especificar las actualizaciones, consulte la documentación de Operaciones de actualización.

No hay respuesta a un mensaje OP_UPDATE.

Volver

Protocolo de conexión

En esta página