Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Códigos de operación heredados

Esta página describe los opcodes heredados que ya no son compatibles con MongoDB. Estos opcodes heredados son:

  • Obsoleto a partir de MongoDB 5.0.

  • No es compatible desde MongoDB 5.1.

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

El mensaje OP_DELETE se utiliza para remover uno o más documentos de una colección. El formato del mensaje OP_DELETE 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. Consulta Encabezado de Mensaje Estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

fullCollectionName

El nombre completo de la colección, específicamente su namespace. El namespace 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 bit para la operación: Los valores de bit 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

Un documento BSON que representa la query utilizada para seleccionar los documentos que se eliminarán. El selector contiene uno o más elementos, 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. Consulta Encabezado de Mensaje Estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

fullCollectionName

El nombre completo de la colección, específicamente su namespace. El namespace 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 la cantidad de documentos en el primer mensaje OP_REPLY de la query. Sin embargo, la base de datos aún establecerá un cursor y devolverá el cursorID al cliente si hay más resultados que numberToReturn. Si el controlador de cliente ofrece la funcionalidad 'limit' (como la palabra clave SQL LIMIT), entonces depende del controlador de cliente asegurar que no se devuelva a la aplicación llamante más del número especificado de documentos.

Si numberToReturn es:

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

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

  • 1el 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 OP_REPLY mensaje.

El mensaje OP_INSERT se utiliza para insertar uno o más documentos en una colección. El formato del mensaje OP_INSERT 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. Consulta Encabezado de Mensaje Estándar.

flags

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

  • 0 corresponde a ContinueOnError. Si se establece, la base de datos no dejará de procesar una inserción en bloque si una falla (por ejemplo, debido a identificadores duplicados). Esto hace que la inserción en bloque se comporte de manera similar a una serie de inserciones individuales, excepto que lastError se establecerá si alguna inserción falla, no solo la última. Si se producen varios errores, solo el más reciente será reportado por getLastError.

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

fullCollectionName

El nombre completo de la colección, específicamente su namespace. El namespace 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 en secuencia, 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 finalizar la query. 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. Consulta Encabezado de Mensaje Estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

numberOfCursorIDs

El número de IDs de cursor que están en el mensaje.

cursorIDs

"arreglo" de ID de cursor que se cerrarán. Si hay más de uno, se escriben en el socket en secuencia, uno tras otro.

Si se lee un cursor hasta agotarlo (leer hasta que OP_QUERY o 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. Consulta Encabezado de Mensaje Estándar.

flags

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

  • 0 está reservada. 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. Permitir query al esclavo de réplica. Normalmente, estos devuelven un error, excepto para el espacio de nombres "local".

  • 3 corresponde a OplogReplay. No es necesario especificar este flag porque la optimización ocurre automáticamente para las queries elegibles en el oplog. Ver oplogReplay para más información.

  • 4 corresponde a NoCursorTimeout. El servidor normalmente agota el tiempo de espera de los cursores inactivos después de un período de inactividad (10 minutos) para evitar el uso excesivo de memoria. Establece esta opción para evitarlo.

  • 5 corresponde a AwaitData. Utilizar con TailableCursor. Si el cursor está al final de los datos, bloquea durante un tiempo en vez de no devolver datos. Después de un periodo de espera, el servidor vuelve a funcionar con normalidad.

  • 6 corresponde a Exhaust. Transmita los datos a máxima velocidad en múltiples paquetes "más", asumiendo que el cliente leerá completamente todos los datos consultados. Más rápido cuando estás extrayendo muchos datos y sabes que quieres bajarlos todos. Nota: no se permite que el cliente no lea todos los datos a menos que cierre la conexión.

  • 7 corresponde a Parcial. Obtén resultados parciales de un mongos si algunas particiones están caídas (en lugar de arrojar un error)

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

fullCollectionName

El nombre completo de la colección, específicamente su namespace. El namespace 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 la cantidad de documentos en el primer mensaje OP_REPLY de la query. Sin embargo, la base de datos aún establecerá un cursor y devolverá el cursorID al cliente si hay más resultados que numberToReturn. Si el controlador de cliente ofrece la funcionalidad 'limit' (como la palabra clave SQL LIMIT), entonces depende del controlador de cliente asegurar que no se devuelva a la aplicación llamante más del número especificado de documentos.

Si numberToReturn es:

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

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

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

query

Documento BSON que representa la query. La query 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 del campo que se debe devolver y el valor entero 1. En notación JSON, un returnFieldsSelector para limitar 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. Consulta Encabezado de Mensaje Estándar.

responseFlags

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

  • 0 corresponde a CursorNotFound. Se establece cuando se llama a getMore, pero el ID del cursor no es válido en el servidor. Devuelto con 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 establece cuando el servidor admite la opción de consulta AwaitData. Si no es así, el cliente debería esperar un poco entre las operaciones getMore de un cursor con seguimiento.

  • 4-31 están reservados. Ignorar.

cursorID

El cursorID del que forma parte este OP_REPLY. En el evento de que el conjunto de resultados de la query quepa en un mensaje OP_REPLY, cursorID será 0. Este cursorID debe ser utilizado en todos los mensajes de OP_GET_MORE para obtener más datos, y además debe ser cerrado por el cliente cuando ya no se necesite a través de un mensaje OP_KILL_CURSORS.

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. Consulta Encabezado de Mensaje Estándar.

ZERO

Valor entero de 0. Reservado para uso futuro.

fullCollectionName

El nombre completo de la colección, específicamente su namespace. El namespace 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 bit para la operación: Los valores de bit corresponden a lo siguiente:

  • 0 corresponde a inserción. 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 establece, la base de datos actualizará todos los objetos que coincidan en la colección. De lo contrario, solo actualiza el primer documento coincidente.

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

selector

Documento BSON que especifica la query para la selección del documento que se va 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