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

Rails mongoid regex trên trường Integer

Giải pháp MongoDB từ câu hỏi được liên kết sẽ là:

db.models.find({ $where: '/^124/.test(this.number)' })

Những thứ bạn giao cho find ánh xạ khá nhiều 1-1 tới Mongoid:

where(:$where => "/^#{numero.to_i}/.test(this.number)")

to_i lệnh gọi sẽ thực hiện nội suy chuỗi ổn cho trường hợp hạn chế này.

Hãy nhớ rằng đây là một điều khá khủng khiếp đối với cơ sở dữ liệu của bạn:nó không thể sử dụng các chỉ mục, nó sẽ quét mọi tài liệu trong bộ sưu tập, ...

Tốt hơn là bạn nên sử dụng trường chuỗi để có thể thực hiện đối sánh regex bình thường. Tôi khá chắc chắn MongoDB sẽ có thể sử dụng một chỉ mục nếu bạn cũng neo regex của mình ngay từ đầu. Nếu bạn thực sự cần nó là một số bên trong cơ sở dữ liệu thì bạn luôn có thể lưu trữ nó dưới dạng cả trường Số nguyên và Chuỗi:

field :number,   :type => Integer
field :number_s, :type => String

và sau đó có một số móc để giữ :number_s cập nhật dưới dạng :number những thay đổi. Nếu bạn đã làm điều này, phạm vi đối sánh mẫu của bạn sẽ nhìn vào :number_s . Tính toán trước và sao chép dữ liệu như thế này là khá phổ biến với MongoDB, vì vậy bạn không nên cảm thấy tồi tệ về nó.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đăng JSON lên Flask dẫn đến lỗi 400 Yêu cầu không hợp lệ

  2. Vòng lặp tìm kiếm không phân biệt chữ hoa chữ thường dấu phụ

  3. Không thể kết nối với Mongo DB qua Spark

  4. Hiệu suất chèn hàng loạt trong MongoDB cho các bộ sưu tập lớn

  5. Cách kết nối mongodb từ xa với pymongo