{_id : { <BSON Object> },"operationType" : "<operation>","fullDocument" : { <document> },"ns" : {"db" : "<database>","coll" : "<collection>"},"to" : {"db" : "<database>","coll" : "<collection>"},"documentKey" : { "_id" : <value> },"updateDescription" : {"updatedFields" : { <document> },"removedFields" : [ "<field>", ... ],"truncatedArrays" : [{ "field" : <field>, "newSize" : <integer> },...]},"clusterTime" : <Timestamp>,"txnNumber" : <NumberLong>,"lsid" : {"id" : <UUID>,"uid" : <BinData>}}
Field | Type | Description |
_id | document | 一个用来唯一标识事件的 BSON 对象。 _id 对象的格式如下:{ "_data" : <BinData|hex string>} 。_data 的类型取决于 MongoDB 的版本 ,可通过 Resume Tokens 查看完整的_data类型介绍。 |
operationType | string | 触发修改事件的操作类型,具体包括以下 8 种:insertdeletereplaceupdatedroprenamedropDatabaseinvalidate |
fullDocument | document | 表示被新增( insert), 替换(replace), 删除(delete), 更新(update )操作所影响的文档。对于 insert 和 replace 操作,该字段表示新增的文档。对于 delete 操作,该字段缺省表示文档已经不存在。对于 update 操作,只有配置了 fullDocument 为 updateLookup 时才会显示。 |
ns | document | 命名空间(namespace),由 database 和 collection 构成。 |
ns.db | string | 数据库名称。 |
ns.coll | string | 集合名称。对于 dropDatabase 操作,该字段缺省。 |
to | document | 当操作类型为 rename 时,表示新的集合名称。该字段对其他操作是缺省的。 |
to.db | string | 新的数据库的名称。 |
to.coll | string | 新的集合名称。 |
documentKey | document | 操作修改的文档的 ID。 |
updateDescription | document | 一个用来描述被更新操作(update operation)修改的字段的文档。该字段仅当事件对应的操作为 update 时才有。 |
updateDescription.updatedFields | document | 包含被更新操作修改的字段,字段的 value 值为更新后的值。 |
updateDescription.removedFields | array | 包含被更新操作删除的字段。 |
updateDescription.truncatedArrays | array | |
updateDescription.truncatedArrays.field | string | 被删除的字段。 |
updateDescription.truncatedArrays.newSize | integer | truncated array 中的元素个数。 |
clusterTime | Timestamp | |
txnNumber | NumberLong | |
lsid | Document |
{_id: { < Resume Token > },operationType: 'insert',clusterTime: <Timestamp>,ns: {db: 'engineering',coll: 'users'},documentKey: {userName: 'alice123',_id: ObjectId("599af247bb69cd8996xxxxxx")},fullDocument: {_id: ObjectId("599af247bb69cd8996xxxxxx"),userName: 'alice123',name: 'Alice'}}
{_id: { < Resume Token > },operationType: 'update',clusterTime: <Timestamp>,ns: {db: 'engineering',coll: 'users'},documentKey: {_id: ObjectId("58a4eb4a30c75625e0xxxxxx")},updateDescription: {updatedFields: {email: 'alice@10gen.com'},removedFields: ['phoneNumber'],truncatedArrays: [ {"field" : "vacation_time","newSize" : 36} ]}}
update
event 配置了 fullDocument : updateLookup
选项的消息内容:{_id: { < Resume Token > },operationType: 'update',clusterTime: <Timestamp>,ns: {db: 'engineering',coll: 'users'},documentKey: {_id: ObjectId("58a4eb4a30c75625e0xxxxxx")},updateDescription: {updatedFields: {email: 'alice@10gen.com'},removedFields: ['phoneNumber'],truncatedArrays: [ {"field" : "vacation_time","newSize" : 36} ]},fullDocument: {_id: ObjectId("58a4eb4a30c75625e0xxxxxx"),name: 'Alice',userName: 'alice123',email: 'alice@10gen.com',team: 'replication'}}
{_id: { < Resume Token > },operationType: 'replace',clusterTime: <Timestamp>,ns: {db: 'engineering',coll: 'users'},documentKey: {_id: ObjectId("599af247bb69cd8996xxxxxx")},fullDocument: {_id: ObjectId("599af247bb69cd8996xxxxxx"),userName: 'alice123',name: 'Alice'}}
replace
操作是通过两步操作实现的:documentKey
对应的文档documentkey
插入新的文档replace
事件的 fullDocument
字段表示的是插入后的新文档。{_id: { < Resume Token > },operationType: 'delete',clusterTime: <Timestamp>,ns: {db: 'engineering',coll: 'users'},documentKey: {_id: ObjectId("599af247bb69cd8996xxxxxx")}}
fullDocument
字段缺省。{_id: { < Resume Token > },operationType: 'drop',clusterTime: <Timestamp>,ns: {db: 'engineering',coll: 'users'}}
{_id: { < Resume Token > },operationType: 'rename',clusterTime: <Timestamp>,ns: {db: 'engineering',coll: 'users'},to: {db: 'engineering',coll: 'people'}}
{_id: { < Resume Token > },operationType: 'dropDatabase',clusterTime: <Timestamp>,ns: {db: 'engineering'}}
{_id: { < Resume Token > },operationType: 'invalidate',clusterTime: <Timestamp>}
本页内容是否解决了您的问题?