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

$ elemmatch không hoạt động trong MongoDB

Nó không hẳn đã hoạt động trong các phiên bản trước đó, vì ít nhất bạn đã sửa đổi phạm vi của this bây giờ đề cập đến "dữ liệu" như một phần tử cấp cao nhất. Tóm lại, điều này không còn được phép nữa và bạn thực sự không nên sử dụng các phương thức JavaScript trừ khi bạn hoàn toàn phải làm như vậy. Ngay cả khi đó, có lẽ vẫn còn một cách tốt hơn trong hầu hết các trường hợp.

Nhưng trên thực tế, đây là cách sử dụng đối sánh JavaScript không cần thiết vì nó không bắt buộc khi có các toán tử khác sẽ thực hiện việc này.

Bạn nên sử dụng mã $ regex biểu mẫu thay thế:

db.docs.find({ "data.First_name": /^kim/i })

Hoặc bất kỳ nơi nào trong trường, hãy xóa dấu mũ ^ :

db.docs.find({ "data.First_name": /kim/i })

Điều này không hiệu quả tương đương với việc thực thi JavaScript nhưng không nhiều vì không có chi phí xử lý thông qua công cụ thông dịch đó. Và tất nhiên nó hoạt động ở mọi nơi.

Ngoài ra, hãy nghĩ về những gì một truy vấn dựa vào JavaScript để giải quyết đang thực sự làm:

  • Gọi một phiên bản thông dịch JavaScript
  • Chuyển đổi các loại tài liệu BSON trên mỗi tài liệu thành các loại JavaScript
  • Đánh giá mã JavaScript trong trình thông dịch trên mỗi tài liệu
  • Truyền JavaScript true | false kết quả trở lại trên mỗi tài liệu

Xem xét rằng $ regex (nhưng với một đối sánh không phân biệt chữ hoa chữ thường không phải là tối ưu) đang thực hiện các thao tác tương tự nhưng sử dụng thư viện C "pcre" nguyên bản mà không cần chuyển đổi và ghi lại trên mỗi tài liệu, thì đó rõ ràng là lựa chọn lành mạnh của cả hai.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để kiểm tra xem mongo db có đang chạy trên Mac hay không?

  2. Flask &MongoDB - For Loop không hoạt động

  3. Cách tra cứu $ bằng cách tránh các giá trị null trong mongodb tổng hợp

  4. Làm cách nào để tăng hiệu suất của hoạt động cập nhật trong Mongo?

  5. Biểu tượng cảm xúc không được lưu chính xác trong mongodb