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

MongoDB $ hoặc truy vấn

Sử dụng $ in

Đối với truy vấn trong câu hỏi, sử dụng $ in

sẽ thích hợp hơn
db.Profiles.find ( { "name" : { $in: ["gary", "rob"] } } );

Tại sao nó không hoạt động

Còn thiếu một trích dẫn - cli đang đợi bạn hoàn thành phần thứ hai của hoặc:

db.Profiles.find ( { $or : [ { "name" : "gary" }, {"name":"rob} ] } )
..............................................................^

Bạn cần hoàn thành truy vấn đủ để cli có thể phân tích cú pháp và sau đó thông báo rằng có lỗi cú pháp.

Đối sánh không phân biệt chữ hoa chữ thường

Như được chỉ ra trong nhận xét, nếu bạn muốn tìm kiếm theo cách không phân biệt chữ hoa chữ thường, thì bạn sử dụng $or với $ regex:

db.Profiles.find ( { $or : [ { "name" : /^gary/i }, {"name": /^rob/i } ] } )

Hoặc, bạn chỉ cần sử dụng một regex:

db.Profiles.find ( { "name" : /^(gary|rob)/i } )

Tuy nhiên, truy vấn regex không bắt đầu bằng một chuỗi cố định không thể sử dụng chỉ mục (nó không thể sử dụng chỉ mục và thực hiện "bắt đầu tại đây một cách hiệu quả cho đến khi không tìm thấy kết quả phù hợp sau đó bảo lãnh") và do đó là tối ưu phụ. Nếu đây là yêu cầu của bạn, tốt hơn hết bạn nên lưu trữ trường tên chuẩn hóa (ví dụ:name_lc - tên viết thường) và truy vấn về điều đó:

db.Profiles.find ( { "name_lc" : { $in: ["gary", "rob"] } } );



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 4 cách xóa tài liệu trong MongoDB

  2. MongoDB + nodejs:Làm thế nào để truy vấn các trường ISODate?

  3. MongoDB - Tạo cơ sở dữ liệu

  4. Chuỗi dự án tổng hợp MongoDB thành ObjectId

  5. Nhập nhiều hơn 1 tệp json bằng mongoimport