Usare l'operatore booleano OR su due campi diversi in una query WHERE di MongoDB

In una query con clausola WHERE fatta in MongoDB vorrei poter usare l'operatore OR su due campi diversi, solo che ricevo un errore, vi spiego con un esempio, ho una collection hotels e dei campi 'nome hotel' e 'city' ed io vorrei fare una query in OR dove voglio ritornati gli hotels hilton oppure quelli presenti in londra, così

db.hotels.find({$where : "name = /hilton/i || city = /london/i"})

ma ricevo il seguente errore:

{ "$err" : "$where compile error" }

Se le due query vengono fatte separatamente funzionano perfettamente

db.hotels.find({$where : "city = /london/i"})
db.hotels.find({$where : "name = /hilton/i"})

Ma se le combino in OR come scritto sopra ricevo quell'errore di compilazione, come posso utilizzare correttamente l'operatore OR della logica booleana in MongoDB?

In Corso 5
MongoDB 06-06-2018 2 Risposte 1192 Visite 0
Antonino Zuopolo

Antonino Zuopolo

Autore di questa domanda

Risposte ( 2 approvate )

  1. Bruno Verzinesi
    +1
    06-06-2018 16:36:22
    Rispondi

    Forse non lo sai ma MongoDB supporta l'operatore booleano $OR, puoi scrivere la tua query in questo modo

    db.hotels.find( { $or: [ { name: /hilton/i }, 
                             { city: /london/i } 
                           ] 
                  } );
  2. Alessandro Ingiglio
    0
    06-06-2018 16:32:01
    Rispondi

    Prova questa query:

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

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva