传统操作码
本页介绍 MongoDB 不再支持的传统操作码。这些传统操作码:
从 MongoDB 5.0 起已弃用。
从 MongoDB 5.1 开始不支持。
从MongoDB 5.1开始, OP_MSG和OP_COMPRESSED是唯一支持向MongoDB服务器发送请求的操作码。
OP_DELETE
OP_DELETE 消息用于从集合中删除一个或多个文档。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. }
字段 | 说明 |
---|---|
header | 消息头。请参阅标准消息头。 |
ZERO | 整数值 0。保留供将来使用。 |
fullCollectionName | 完整的集合名称,特别是其命名空间。命名空间是数据库名称与集合名称的串联,使用 . 表示串联。例如,对于数据库 test 和集合 contacts ,完整的集合名称为 test.contacts 。 |
flags | 操作的位值:位值对应于以下内容:
|
selector | BSON 文档,代表选择要删除的文档的查询。selector 包含一个或多个元素,所有这些元素必须与要从集合中删除的文档匹配。 |
对 OP_DELETE 消息没有响应。
OP_GET_MORE
OP_GET_MORE 消息用于在数据库中查询集合的文档。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 }
字段 | 说明 |
---|---|
header | 消息头。请参阅标准消息头。 |
ZERO | 整数值 0。保留供将来使用。 |
fullCollectionName | 完整的集合名称,特别是其命名空间。命名空间是数据库名称与集合名称的串联,使用 . 表示串联。例如,对于数据库 test 和集合 contacts ,完整的集合名称为 test.contacts 。 |
numberToReturn | 限制查询的第一个 OP_REPLY 消息中的文档数量。但是,如果结果多于 如果
|
cursorID | OP_REPLY中的游标标识符。 这必须是来自数据库的值。 |
数据库将使用 OP_REPLY 消息来响应 OP_GET_MORE 消息。
OP_INSERT
OP_DELETE 消息用于向集合中插入一个或多个文档。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 }
字段 | 说明 |
---|---|
header | 消息头。请参阅标准消息头。 |
flags | 操作的位值:位值对应于以下内容:
|
fullCollectionName | 完整的集合名称,特别是其命名空间。命名空间是数据库名称与集合名称的串联,使用 . 表示串联。例如,对于数据库 test 和集合 contacts ,完整的集合名称为 test.contacts 。 |
documents | 要插入集合的一个或多个文档。如果有多个文档,则按顺序依次写入套接字。 |
对 OP_INSERT 消息没有响应。
OP_KILL_CURSORS
OP_KILL_CURSORS 消息用于关闭数据库中的活动游标。这是必要的操作,用于确保在查询结束时回收数据库资源。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 }
字段 | 说明 |
---|---|
header | 消息头。请参阅标准消息头。 |
ZERO | 整数值 0。保留供将来使用。 |
numberOfCursorIDs | 消息中的游标 ID 的数量。 |
cursorIDs | 要关闭的游标 ID 的“数组”。如果有多个操作码,则按顺序依次写入套接字。 |
如果读取游标直至耗尽(读取直至 OP_QUERY 或 OP_GET_MORE 返回游标 ID 为零),则无需终止游标。
OP_QUERY
OP_QUERY 消息用于在数据库中查询集合中的文档。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. }
字段 | 说明 | |
---|---|---|
header | 消息头。请参阅标准消息头。 | |
flags | 操作的位值:位值对应于以下内容:
| |
fullCollectionName | 完整的集合名称,特别是其命名空间。命名空间是数据库名称与集合名称的串联,使用 . 表示串联。例如,对于数据库 test 和集合 contacts ,完整的集合名称为 test.contacts 。 | |
numberToSkip | 设置返回查询结果时要忽略的文档数量(从结果数据集的第一个文档开始)。 | |
numberToReturn | 限制查询的第一条 OP_REPLY消息中的文档数量。 但是,如果结果多于 如果
| |
query | 表示查询的 BSON 文档。查询包含一个或多个元素,所有这些元素都必须与要包含在结果集中的文档相匹配。可能的元素包括 $query 、$orderby 、$hint 和 $explain 。 | |
returnFieldsSelector | 可选。用于限制已返回文档中的字段的 BSON 文档。
|
数据库将使用 OP_QUERY 消息来响应 OP_REPLY 消息。
注意
MongoDB 5.1 已删除对 OP_QUERY
查找操作和 OP_QUERY
命令的支持。但有一例外:运行 hello
和 isMaster
命令以作为连接握手的一部分仍然支持 OP_QUERY
。
OP_REPLY
OP_REPLY
消息由数据库发送,以响应 OP_QUERY 或 OP_GET_MORE 消息。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 }
字段 | 说明 |
---|---|
header | 消息头。请参阅标准消息头。 |
responseFlags | 操作的位值:位值对应于以下内容:
|
cursorID | 此 OP_REPLY 是 cursorID 的一部分。 如果查询的结果集适合一条 OP_REPLY 消息,则cursorID 将为0 。 此cursorID 必须在用于获取更多数据的任何OP_GET_MORE消息中使用,并且还必须由客户端在不再需要时通过OP_KIL_CURSORS消息关闭。 |
startingFrom | 游标的起始位置。 |
numberReturned | 回复中的文档数量。 |
documents | 已返回文档。 |
OP_UPDATE
OP_UPDATE 消息用于更新集合中的文档。OP_UPDATE 消息的格式如下:
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 }
字段 | 说明 |
---|---|
header | 消息头。请参阅标准消息头。 |
ZERO | 整数值 0。保留供将来使用。 |
fullCollectionName | 完整的集合名称,特别是其命名空间。命名空间是数据库名称与集合名称的串联,使用 . 表示串联。例如,对于数据库 test 和集合 contacts ,完整的集合名称为 test.contacts 。 |
flags | 操作的位值:位值对应于以下内容:
|
selector | BSON 文档,指定选择要更新的文档的查询。 |
update | BSON 文档,指定要执行的更新。有关指定更新的信息,请参阅更新操作文档。 |
对 OP_UPDATE 消息没有响应。