MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Meteor có thể xử lý chính xác dữ liệu được cập nhật bên ngoài trực tiếp vào cơ sở dữ liệu MongoDB không?

Meteor được định cấu hình để kết nối với cơ sở dữ liệu mongo bên ngoài . Bạn đã đóng gói mongo trên một ứng dụng phát triển cục bộ nhưng đó chỉ là sự thoải mái và dễ dàng tích hợp.

Trong quá trình sản xuất, bạn sẽ luôn phải kết nối Meteor với phiên bản Mongo đang chạy của mình bằng MONGO_URL biến môi trường .

Phần thưởng:bạn có thể đặt MONGO_URL ngay cả trong chế độ nhà phát triển để kết nối với một db cụ thể trong chế độ nhà phát triển. Lưu ý rằng bạn có thể CRUD mọi thứ trên db này, hãy sử dụng cẩn thận.

Dưới mui xe Meteor sử dụng trình điều khiển nút mongo. Về cơ bản, bạn có thể sử dụng tất cả API của trình điều khiển này ( xem bài đăng này để biết chi tiết về cách gọi các phương thức Mongo bản địa)

Với hệ thống xuất bản / đăng ký của Meteor về cơ bản bạn kiểm soát dữ liệu nào được xuất bản cho khách hàng. Các ấn bản đang chạy mỗi khi dữ liệu thay đổi (tương tự như mẫu người quan sát).

Nếu tất cả khách hàng của bạn đăng ký dữ liệu của một bộ sưu tập, họ sẽ nhận được các bản cập nhật sau khi bộ sưu tập cập nhật. Và bây giờ đến với tính năng mong muốn nhất của bạn:tính năng này cũng hoạt động nếu dữ liệu này được cập nhật bởi một số nguồn bên ngoài.

Nó cũng hoạt động với khoảng thời gian cập nhật rất nhanh. Tôi đã làm việc trong một dự án gần đây trong đó một lượng lớn dữ liệu đã được cập nhật thông qua python trên bộ sưu tập Mongo-DB. Ứng dụng Meteor đã lắng nghe nó và hiển thị dữ liệu cho khách hàng trong "thời gian thực" (hoặc những gì người dùng coi là thời gian thực).

Tuy nhiên, có một số cạm bẫy và bạn nên biết trước về chúng.

  1. Meteor tạo tài liệu bằng _id thuộc loại chuỗi chứ không phải Mongo.ObjectID . Tuy nhiên, nó có khả năng đọc và ghi nó nếu bạn sử dụng đúng cách .

  2. Meteor kết thúc bộ sưu tập bằng một API riêng tích hợp bộ sưu tập tốt nhất với các sợi fibers của nó môi trường dựa trên. Nếu bạn cần sử dụng thêm chức năng, vui lòng đọc tại đây tại đây .

  3. Con trỏ trả về hoạt động hơi khác một chút nhưng như với Bộ sưu tập, cũng có tất cả các chức năng gốc khả dụng nếu bạn nhận được con trỏ từ rawCollection

  4. Kiểm tra kỹ các loại dữ liệu bạn sử dụng trên bộ sưu tập của mình. Ví dụ:gắn với các loại Ngày giống nhau (như ISODate) để không có lỗi ngoài ý muốn sau khi cập nhật. Ngoài ra còn có bản sao của Meteor với mongoose được đặt tên là simpl-schema ( gói npm ) là một cách tốt để giữ cấu trúc trong bộ sưu tập của bạn.

Tóm lại, nếu bạn xem xét hầu hết các tài liệu hướng dẫn Meteor và API, bạn nên đi đúng hướng vì việc tích hợp các bộ sưu tập được cập nhật bên ngoài thường chạy rất tốt và chủ yếu là hiểu hệ thống pub / sub để làm cho nó chạy.

Chỉnh sửa:

Có, nhưng bạn cần biết về một truy vấn khác. Nếu tài liệu (được tạo bên ngoài) có giá trị sau:

{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c") }

Sau đó, bạn phải thay đổi truy vấn (Meteor) của mình từ

collection.findOne("4ecc05e55dd98a436ddcc47c") // returns undefined

đến

collection.findOne({ "_id" : new Mongo.ObjectID("4ecc05e55dd98a436ddcc47c") }) // returns { _id: ObjectID { _str: '4ecc05e55dd98a436ddcc47c' } }

Cùng một khuôn mẫu hoạt động để tạo tài liệu. Thay vì

collection.insert({ foo:'bar' })

bạn chuyển một ObjectID mới được tạo:

collection.insert({ foo:'bar', _id: new Mongo.ObjectID() })

Nếu bạn tạo tài liệu trong Meteor bằng phương pháp trên, bạn không cần phải lo lắng về _id là một chuỗi.

Bên cạnh đó, tài liệu phải như vậy (xem cầu định dạng dữ liệu ). Tuy nhiên, nếu có một ngoại lệ mà bạn thấy chưa được đề cập ở đây, vui lòng bình luận vì điều này cũng có thể quan trọng đối với những người dùng khác.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. không thể lấy dữ liệu từ cơ sở dữ liệu sau khi khai báo nhiều lược đồ (mongoose + express + mongodb

  2. Cách nhận số lượng từ kết quả tra cứu tổng hợp

  3. Làm cách nào tôi có thể chọn một số bản ghi cho một trường cụ thể bằng cách sử dụng mongodb?

  4. Làm thế nào để triển khai các thẻ bài trong Mongo?

  5. Hiển thị nhanh các tài liệu mongodb trong Jade