Hướng dẫn mongodb watch - mongodb đồng hồ

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

Trên trang này

  • Sự định nghĩa
  • khả dụng
  • Triển khai
  • Công cụ lưu trữ
  • Đọc mối quan tâm majority Hỗ trợ
  • Hành vi
  • Khả năng tiếp tục
  • Tra cứu tài liệu đầy đủ của các hoạt động cập nhật
  • khả dụng
  • Triển khai
  • Công cụ lưu trữ
  • Đọc mối quan tâm majority Hỗ trợ

Hành vi
Hướng dẫn mongodb watch - mongodb đồng hồ

For replica sets and sharded clusters only

Khả năng tiếp tục

Tra cứu tài liệu đầy đủ của các hoạt động cập nhật

Kiểm soát truy cập

Lặp lại con trỏ

Thí dụ

Mongo.watch( pipeline, options ) cho các bộ bản sao và các cụm Sharded chỉ

npx mongodb-resumetoken-decoder <RESUME TOKEN>

7

Mới trong phiên bản 4.0: Yêu cầu featureCompatibilityVersion (FCV) được đặt thành

npx mongodb-resumetoken-decoder <RESUME TOKEN>

0 trở lên. Để biết thêm thông tin về FCV, xem

npx mongodb-resumetoken-decoder <RESUME TOKEN>

1

Mở một con trỏ luồng thay đổi cho một bộ bản sao hoặc cụm được báo cáo để báo cáo về tất cả các bộ sưu tập không phải của nó trên cơ sở dữ liệu của nó, ngoại trừ

npx mongodb-resumetoken-decoder <RESUME TOKEN>

3,

npx mongodb-resumetoken-decoder <RESUME TOKEN>

4 và cơ sở dữ liệu

npx mongodb-resumetoken-decoder <RESUME TOKEN>

5.

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8
to attempt resuming notifications starting after the operation specified in the resume token.

Tài liệu

npx mongodb-resumetoken-decoder <RESUME TOKEN>

6 có thể chứa các trường và giá trị sau:

Đồng ruộng

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

2

Mới trong phiên bản 4.0: Yêu cầu featureCompatibilityVersion (FCV) được đặt thành

npx mongodb-resumetoken-decoder <RESUME TOKEN>

0 trở lên. Để biết thêm thông tin về FCV, xem

npx mongodb-resumetoken-decoder <RESUME TOKEN>

1

Mở một con trỏ luồng thay đổi cho một bộ bản sao hoặc cụm được báo cáo để báo cáo về tất cả các bộ sưu tập không phải của nó trên cơ sở dữ liệu của nó, ngoại trừ

npx mongodb-resumetoken-decoder <RESUME TOKEN>

3,

npx mongodb-resumetoken-decoder <RESUME TOKEN>

4 và cơ sở dữ liệu

npx mongodb-resumetoken-decoder <RESUME TOKEN>

5.

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8
to attempt starting a new change stream after the operation specified in the resume token. Allows notifications to resume after an invalidate event.

Tài liệu

npx mongodb-resumetoken-decoder <RESUME TOKEN>

6 có thể chứa các trường và giá trị sau:

Đồng ruộng

Loại hình

while (!watchCursor.isClosed()) {
if (watchCursor.hasNext()) {
firstChange = watchCursor.next();
break;
}
}
1

Sự mô tả

tài liệu

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8 returns the delta of those fields modified by an update operation, instead of the entire updated document.

Không bắt buộc. Chỉ đạo

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8 để thử thông báo tiếp tục bắt đầu sau khi hoạt động được chỉ định trong mã thông báo sơ yếu lý lịch.

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8
to look up the most current majority-committed version of the updated document.

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8
returns a
while (!watchCursor.isClosed()) {
if (watchCursor.hasNext()) {
firstChange = watchCursor.next();
break;
}
}
1 field with the document lookup in addition to the
while (!watchCursor.isClosed()) {
if (watchCursor.hasNext()) {
firstChange = watchCursor.next();
break;
}
}
8 delta.

while (!watchCursor.isClosed()) {
if (watchCursor.hasNext()) {
firstChange = watchCursor.next();
break;
}
}
9

int

Mỗi tài liệu sự kiện thay đổi luồng bao gồm mã thông báo sơ yếu lý lịch dưới dạng trường

npx mongodb-resumetoken-decoder <RESUME TOKEN>

9. Vượt qua toàn bộ trường

npx mongodb-resumetoken-decoder <RESUME TOKEN>

9 của tài liệu sự kiện thay đổi đại diện cho hoạt động bạn muốn tiếp tục sau.

npx mongodb-resumetoken-decoder <RESUME TOKEN>

7 loại trừ lẫn nhau với

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

2 và

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

3.

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
1

int

Không bắt buộc. Chỉ đạo

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8 để cố gắng bắt đầu một luồng thay đổi mới sau khi hoạt động được chỉ định trong mã thông báo sơ yếu lý lịch. Cho phép thông báo tiếp tục sau một sự kiện không hợp lệ.

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

2 loại trừ lẫn nhau với

npx mongodb-resumetoken-decoder <RESUME TOKEN>

7 và

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

3.

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
3

Mới trong phiên bản 4.0: Yêu cầu featureCompatibilityVersion (FCV) được đặt thành

npx mongodb-resumetoken-decoder <RESUME TOKEN>

0 trở lên. Để biết thêm thông tin về FCV, xem

npx mongodb-resumetoken-decoder <RESUME TOKEN>

1

Mở một con trỏ luồng thay đổi cho một bộ bản sao hoặc cụm được báo cáo để báo cáo về tất cả các bộ sưu tập không phải của nó trên cơ sở dữ liệu của nó, ngoại trừ

npx mongodb-resumetoken-decoder <RESUME TOKEN>

3,

npx mongodb-resumetoken-decoder <RESUME TOKEN>

4 và cơ sở dữ liệu

npx mongodb-resumetoken-decoder <RESUME TOKEN>

5.

Tài liệu

npx mongodb-resumetoken-decoder <RESUME TOKEN>

6 có thể chứa các trường và giá trị sau:

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

3

Đồng ruộng

Loại hình

Sự mô tả

Returns:tài liệu

Không bắt buộc. Chỉ đạo npx mongodb-resumetoken-decoder 8 để thử thông báo tiếp tục bắt đầu sau khi hoạt động được chỉ định trong mã thông báo sơ yếu lý lịch.

Mỗi tài liệu sự kiện thay đổi luồng bao gồm mã thông báo sơ yếu lý lịch dưới dạng trường npx mongodb-resumetoken-decoder 9. Vượt qua toàn bộ trường npx mongodb-resumetoken-decoder 9 của tài liệu sự kiện thay đổi đại diện cho hoạt động bạn muốn tiếp tục sau.

npx mongodb-resumetoken-decoder <RESUME TOKEN>

7 loại trừ lẫn nhau với

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

2 và

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

3. is available for replica sets and sharded clusters:

  • Không bắt buộc. Chỉ đạo

    npx mongodb-resumetoken-decoder <RESUME TOKEN>

    8 để cố gắng bắt đầu một luồng thay đổi mới sau khi hoạt động được chỉ định trong mã thông báo sơ yếu lý lịch. Cho phép thông báo tiếp tục sau một sự kiện không hợp lệ.

    npx mongodb-resumetoken-decoder <RESUME TOKEN>

    8
    on any data-bearing member.

  • { resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

    2 loại trừ lẫn nhau với

    npx mongodb-resumetoken-decoder <RESUME TOKEN>

    7 và

    { resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

    3.

    npx mongodb-resumetoken-decoder <RESUME TOKEN>

    8
    on a

    watchCursor = db.getMongo().watch()

    3 instance.

Mới trong phiên bản 4.2.

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8 with the Wired Tiger storage engine.

sợi dây

Không bắt buộc. Theo mặc định,

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8 trả về Delta của các trường đó được sửa đổi bởi một thao tác cập nhật, thay vì toàn bộ tài liệu được cập nhật.

  • Đặt

    while (!watchCursor.isClosed()) {
    if (watchCursor.hasNext()) {
    firstChange = watchCursor.next();
    break;
    }
    }
    1 thành
    while (!watchCursor.isClosed()) {
    if (watchCursor.hasNext()) {
    firstChange = watchCursor.next();
    break;
    }
    }
    4 thành chỉ đạo

    npx mongodb-resumetoken-decoder <RESUME TOKEN>

    8 để tra cứu phiên bản đa số mới nhất của tài liệu cập nhật.

    npx mongodb-resumetoken-decoder <RESUME TOKEN>

    8 Trả về trường
    while (!watchCursor.isClosed()) {
    if (watchCursor.hasNext()) {
    firstChange = watchCursor.next();
    break;
    }
    }
    1 với Tra cứu tài liệu ngoài đồng bằng
    while (!watchCursor.isClosed()) {
    if (watchCursor.hasNext()) {
    firstChange = watchCursor.next();
    break;
    }
    }
    8. only notifies on data changes that have persisted to a majority of data-bearing members.

  • Không bắt buộc. Chỉ định số lượng sự kiện thay đổi tối đa để trả về trong mỗi lô phản hồi từ cụm MongoDB.

    • Có chức năng tương tự như

      while (!watchCursor.isClosed()) {
      let next = watchCursor.tryNext()
      while (next !== null) {
      printjson(next);
      next = watchCursor.tryNext()
      }
      }
      0

    • Không bắt buộc. Lượng thời gian tối đa tính bằng mili giây, máy chủ chờ thay đổi dữ liệu mới để báo cáo cho con trỏ luồng thay đổi trước khi trả lại một lô trống.

    • Mặc định là

      while (!watchCursor.isClosed()) {
      let next = watchCursor.tryNext()
      while (next !== null) {
      printjson(next);
      next = watchCursor.tryNext()
      }
      }
      2 mili giây.

    • Không bắt buộc. Vượt qua một tài liệu đối chiếu để chỉ định một đối chiếu cho con trỏ luồng thay đổi.

Nếu bị bỏ qua, mặc định là so sánh nhị phân

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
4.Drivers,

watchCursor = db.getMongo().watch()

9
does not automatically attempt to resume a change stream cursor after an error. The MongoDB drivers make one attempt to automatically resume a change stream cursor after certain errors.

Dấu thời gian uses information stored in the oplog to produce the change event description and generate a resume token associated to that operation. If the operation identified by the resume token passed to the

npx mongodb-resumetoken-decoder <RESUME TOKEN>

7 or

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

2 option has already dropped off the oplog,

npx mongodb-resumetoken-decoder <RESUME TOKEN>

8
cannot resume the change stream.

Xem sơ yếu lý lịch một luồng thay đổi để biết thêm thông tin về việc tiếp tục luồng thay đổi.

Ghi chú

  • Bạn không thể sử dụng

    npx mongodb-resumetoken-decoder <RESUME TOKEN>

    7 để tiếp tục luồng thay đổi sau một sự kiện vô hiệu hóa (ví dụ: thả hoặc đổi tên bộ sưu tập) đóng luồng. Bắt đầu từ MongoDB 4.2, bạn có thể sử dụng startafter để bắt đầu một luồng thay đổi mới sau một sự kiện không hợp lệ.

  • Nếu việc triển khai là một cụm bị che khuất, việc loại bỏ Shard có thể khiến con trỏ dòng thay đổi mở đóng lại và con trỏ luồng thay đổi đóng có thể không được tiếp tục hoàn toàn.

Ghi chú

Bạn không thể sử dụng npx mongodb-resumetoken-decoder 7 để tiếp tục luồng thay đổi sau một sự kiện vô hiệu hóa (ví dụ: thả hoặc đổi tên bộ sưu tập) đóng luồng. Bắt đầu từ MongoDB 4.2, bạn có thể sử dụng startafter để bắt đầu một luồng thay đổi mới sau một sự kiện không hợp lệ.

Nếu việc triển khai là một cụm bị che khuất, việc loại bỏ Shard có thể khiến con trỏ dòng thay đổi mở đóng lại và con trỏ luồng thay đổi đóng có thể không được tiếp tục hoàn toàn.

Tiếp tục mã thông báo

Loại mã thông báo sơ yếu lý lịch

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
5 phụ thuộc vào các phiên bản MongoDB và, trong một số trường hợp, phiên bản tương thích tính năng (FCV) tại thời điểm mở/nối lại của luồng thay đổi (nghĩa là thay đổi giá trị FCV không ảnh hưởng đến mã thông báo sơ yếu lý lịch đối với thay đổi đã mở dòng suối):

Phiên bản MongoDB

Phiên bản tương thích tính năng

Sơ yếu lý lịch mã thông báo

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
5

MongoDB 4.2 trở lên

"4.2" hoặc "4.0"

Chuỗi mã hóa hex (

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
7)

MongoDB 4.2 trở lên

"4.2" hoặc "4.0"

"4.0"

Chuỗi mã hóa hex (

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
7)

"4.2" hoặc "4.0"

"3.6"

Chuỗi mã hóa hex (

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
7)

MongoDB 4.0.7 trở lên

"3.6"

Chuỗi mã hóa hex (

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
7)

MongoDB 4.0.7 trở lên

"4.0" hoặc "3.6"

MongoDB 4.0.6 và sớm hơn

Chuỗi mã hóa hex (

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}
9)"snippet", an extension to

watchCursor = db.getMongo().watch()

9
, that decodes hex-encoded resume tokens.

Bindataresumetoken snippet from

watchCursor = db.getMongo().watch()

9

snippet install resumetoken
decodeResumeToken('')

MongoDB 3.6resumetoken from the command line (without using

watchCursor = db.getMongo().watch()

9) if majority3 is installed on your system:

npx mongodb-resumetoken-decoder <RESUME TOKEN>

Với mã thông báo tiếp tục chuỗi được mã hóa hex, bạn có thể so sánh và sắp xếp các mã thông báo sơ yếu lý lịch.

  • Bất kể giá trị FCV là gì, triển khai 4.0 có thể sử dụng mã thông báo sơ yếu lý lịch Bindata hoặc mã thông báo tiếp tục chuỗi HEX để tiếp tục luồng thay đổi. Do đó, việc triển khai 4.0 có thể sử dụng mã thông báo sơ yếu lý lịch từ luồng thay đổi được mở trên bộ sưu tập từ triển khai 3,6.

  • Các định dạng mã thông báo sơ yếu lý lịch mới được giới thiệu trong phiên bản MongoDB không thể được tiêu thụ bởi các phiên bản MongoDB trước đó. in

    watchCursor = db.getMongo().watch()

    9

MongoDB cung cấp một "đoạn trích", một phần mở rộng cho

watchCursor = db.getMongo().watch()

9, giải mã các mã thông báo sơ yếu lý lịch được mã hóa hex.

Bạn có thể cài đặt và chạy đoạn trích nối lại từ

watchCursor = db.getMongo().watch()

9

Bạn cũng có thể chạy Resumetoken từ dòng lệnh (mà không cần sử dụng

watchCursor = db.getMongo().watch()

9) nếu majority3 được cài đặt trên hệ thống của bạn:

Xem những điều sau đây để biết thêm chi tiết về:

tiếp tục

{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }

Sử dụng đoạn trích trong

watchCursor = db.getMongo().watch()

9

Theo mặc định, con trỏ luồng thay đổi trả về các thay đổi trường/deltas cụ thể cho các hoạt động cập nhật. Bạn cũng có thể định cấu hình luồng thay đổi để tra cứu và trả về phiên bản đa số hiện tại của tài liệu đã thay đổi. Tùy thuộc vào các hoạt động viết khác có thể xảy ra giữa bản cập nhật và tra cứu, tài liệu được trả lại có thể khác biệt đáng kể so với tài liệu tại thời điểm cập nhật.

Tùy thuộc vào số lượng thay đổi được áp dụng trong hoạt động cập nhật và kích thước của tài liệu đầy đủ, có rủi ro rằng kích thước của tài liệu sự kiện thay đổi cho hoạt động cập nhật lớn hơn giới hạn tài liệu BSON 16MB. Nếu điều này xảy ra, máy chủ sẽ đóng con trỏ luồng thay đổi và trả về lỗi.

while (!watchCursor.isClosed()) {
if (watchCursor.hasNext()) {
firstChange = watchCursor.next();
break;
}
}

Bắt đầu từ MongoDB 4.2, các luồng thay đổi có sẵn bất kể hỗ trợ quan tâm đọc

watchCursor = db.getMongo().watch()

5; Nghĩa là, hãy đọc hỗ trợ Mối quan tâm majority có thể được bật (mặc định) hoặc bị vô hiệu hóa để sử dụng các luồng thay đổi.

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}

Trong MongoDB 4.0 trở lên, các luồng thay đổi chỉ khả dụng nếu

watchCursor = db.getMongo().watch()

5 Đọc hỗ trợ mối quan tâm được bật (mặc định).

watchCursor = db.getMongo().watch()

9
opens a change stream cursor on a replica set. The returned cursor reports on data changes to all the non-

npx mongodb-resumetoken-decoder <RESUME TOKEN>

2 collections across all databases except for the

npx mongodb-resumetoken-decoder <RESUME TOKEN>

3,

npx mongodb-resumetoken-decoder <RESUME TOKEN>

4, and the

npx mongodb-resumetoken-decoder <RESUME TOKEN>

5 databases.

watchCursor = db.getMongo().watch()

Khi chạy với Điều khiển truy cập, người dùng phải có các hành động đặc quyền majority8 và majority9 trên tất cả các bộ sưu tập phi hệ thống trên tất cả các cơ sở dữ liệu .. nghĩa là, người dùng phải có vai trò cấp đặc quyền sau:

while (!watchCursor.isClosed()) {
let next = watchCursor.tryNext()
while (next !== null) {
printjson(next);
next = watchCursor.tryNext()
}
}

Vai trò Mongo.watch( pipeline, options )0 tích hợp cung cấp các đặc quyền phù hợp.