2012-04-14 37 views
5

Tôi không thể tìm thấy câu trả lời trên google, cũng như trang web mongoose, vì vậy tôi hỏi ở đây. Nếu có thể, làm thế nào tôi có thể tìm kiếm một chuỗi kết hợp một phần trong tài liệu.Tìm chuỗi kết hợp một phần

ví dụ:

Trong một bộ sưu tập sử dụng: chức năng

{ name: "Louis", location: "Paris, France" }, 
{ name: "Bill", location: "Paris, Illinoid" }, 
{ name: "Stephen", location: "Toronto, Ontario" } 

cầy mangut:

searchForCity("Paris"); 

Kết quả sẽ là một danh sách các tài liệu từ bộ sưu tập tài có "Paris" trong vị trí Chuỗi. ví dụ:

[ 
    { name: "Louis", location: "Paris, France" }, 
    { name: "Homer", location: "Paris, Illinois" } 
] 
+0

Hiya hy vọng điều này sẽ giúp: http://www.mongodb.org/display/DOCS/Advanced+Queries tìm kiếm .find có chữ đẹp, chúc mừng! –

Trả lời

16

Bạn có thể sử dụng một regex cho rằng:

Query#regex, Query#$regex

Chỉ định điều hành $regex.

query.regex('name.first', /^a/i) 

Vì vậy, một cái gì đó như thế này:

User.where('location').$regex(/Paris/); 
User.where('location').$regex(/paris/i); // Case insensitive version 

Hãy ghi nhớ rằng regex truy vấn có thể rất tốn kém như MongoDB sẽ phải chạy regex chống lại mọi đơn location. Nếu bạn có thể neo các regex của mình ngay từ đầu:

User.where('location').$regex(/^Paris/); 

thì bạn có thể lập chỉ mục vị trí và MongoDB sẽ sử dụng chỉ mục đó.

+2

Hoạt động hoàn hảo, phải thêm: var expression = new RegExp (word, "i") ;, là word = "Paris"; đây là tôi có thể bao gồm các biến trong đó. – guiomie

+0

Có giải pháp mongoose không? – chovy

+0

@chovy Um, phần nào của câu trả lời * không phải là * một giải pháp Mongoose? –

Các vấn đề liên quan