2009-12-22 7 views
5

में प्रश्न पूछें, आप नीचे दिए गए एक प्रश्न कैसे करते हैं, जहां मुझे लंदन या होटल में होटल चाहिए जो उनके नाम पर हिल्टन है?

इस क्वेरी db.hotels.find ({$ जहां: "नाम =/हिल्टन/मैं || शहर =/लंदन/i"})

इस तरह के एक त्रुटि त्रुटि देता है: अं { "$ ":" $ जहां त्रुटि संकलन "}

दोनों प्रश्नों को अलग से काम ठीक: db.hotels.find ({$ जहां:" शहर =/लंदन/i "}) db.hotels.find ({$ जहां : "नाम =/हिल्टन/i"})

उत्तर

5

इसे आजमाएं:

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

नोट जहां तक ​​मैं समझता हूं $where प्रति-दस्तावेज़ मूल्यांकन करता है, इसलिए यह बहुत धीमा हो सकता है। आप एक ही विशेषता है चाहते हैं, तो मैं

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

लेकिन मैं दो अलग-अलग रहा हूँ फ़ील्ड्स :(अन्यथा दूसरी क्वेरी ठीक होगी –

+0

आह! मैंने जवाब अपडेट किया है। –

+0

धन्यवाद एलेक्स :) आप अभी सही हैं –

7

तरह का सुझाव दिया ख़ाली चाहते अब, यह MongoDB $ या शर्त का समर्थन करता है, तो आप क्या कर सकते हैं इस तरह:

db.hotels.find({ $or: [ { name: /hilton/i }, 
         { city: /london/i } 
         ] 
       });