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

$ Hoặc bộ chọn của tôi trong biểu thức so khớp trình kích hoạt cơ sở dữ liệu không hoạt động ở cấp độ lồng thứ hai khi định cấu hình trình kích hoạt cơ sở dữ liệu

Vì vậy, tôi đã có thể giải quyết vấn đề này bằng cách thay đổi truy vấn để theo dõi trường được cập nhật cùng lúc nhưng không được lồng vào nhau. Tôi nghĩ rằng vấn đề khi kiểm tra trường lồng nhau là ChangeEvent của updateDescription thuộc tính không chứa đối tượng lồng nhau thực sự đã thay đổi; thay vào đó nó chứa đại diện ký hiệu dấu chấm của sự thay đổi. Vì vậy, nếu bạn xem Cập nhật 2 trong bài đăng của tôi, bạn sẽ thấy rằng updatedFields có giá trị này:{\"someOtherField\":310,\"message.fansNo\":1... thay vì {\"someOtherField\":310,\"message\":{\"fansNo\":1... . Bằng cách sử dụng message.fansNo trong truy vấn $ match, Mongo sẽ tìm hình dạng đối tượng này:{\"message\":{\"fansNo\":1... , không khớp trong trường hợp này. Giải pháp "thực sự" ở đây có thể là thoát khỏi . trong message.fansNo trong biểu thức so khớp của tôi, nhưng tôi không thể làm cho điều đó hoạt động (xem chủ đề này ).

Vì vậy, "giải pháp" phù hợp với tôi thực sự chỉ là một cách giải quyết phù hợp với trường hợp sử dụng cụ thể của tôi:điều đó xảy ra là someOtherField luôn được cập nhật cùng với message.fansNosomeOtherField không được lồng vào nhau. Vì vậy, tôi có thể khớp với someOtherField mà không lo lắng về việc làm tổ. Về cơ bản, biểu thức đối sánh này mang lại cho tôi kết quả mà tôi muốn:

{
  "$or": [
    {
      "updateDescription.updatedFields.someOtherField": {"$exists":true}
    },
    {
      "updateDescription.updatedFields.someOtherField":{"$exists":true}
    }
  ]
}

Hy vọng điều này sẽ giúp ích cho người khác!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tìm nạp các bản ghi mới nhất bằng find_one trong pymongo

  2. BsonSerializationException khi tuần tự hóa một Từ điển <DateTime, T> thành BSON

  3. Tổng hợp nhóm theo ngày với bù đắp tiết kiệm ánh sáng ban ngày

  4. Công cụ giám sát và khám phá máy chủ không được dùng nữa

  5. Mongoose / NextJS - Mô hình không được xác định / Không thể ghi đè mô hình sau khi được biên dịch