2009-12-22 56 views
5

Làm cách nào để bạn thực hiện truy vấn giống như truy vấn bên dưới, nơi tôi muốn các khách sạn ở Luân Đôn HOẶC khách sạn có hilton trong tên của họ?

truy vấn db.hotels.find này ({$ đó: "name =/hilton/i || thành phố =/london/i"})

cho lỗi như vậy lỗi: { "$ err ":" $ nơi biên dịch lỗi "}

Cả hai truy vấn riêng biệt đều hoạt động ok: db.hotels.find ({$ where:" city =/london/i "}) db.hotels.find ({$ ở đâu : "name =/hilton/i"})

Trả lời

5

Hãy thử cách này:

db.hotels.find({ 
    $where: "/london/i.test(this.city) || /hilton/i.test(this.hotel)" 
}) 

LƯU Ý Theo như tôi hiểu $where thực hiện đánh giá mỗi tài liệu, vì vậy nó có thể khá chậm. Nếu bạn muốn có một thuộc tính duy nhất, tôi muốn đề nghị smth như

db.hotels.find({name: /(hilton|london)/i}) 
+0

Nhưng tôi đang tìm kiếm hai khác nhau lĩnh vực :(nếu không truy vấn thứ hai sẽ là tốt –

+0

Ah! Tôi đã cập nhật câu trả lời –

+0

Cảm ơn Alex :) bạn đang aaaalmost quyền –

7

Bây giờ, MongoDB hỗ trợ $ hay điều kiện, bạn có thể làm được điều này như:

db.hotels.find({ $or: [ { name: /hilton/i }, 
         { city: /london/i } 
         ] 
       }); 
Các vấn đề liên quan