Secondo il mongoid documentation sulla fusione esplicita ("Queryable # a - di default per intersecare") mi aspetterei la seguente query:intersecanti Mongoid "in" -Queries
Contact.in(id: ['a', 'b']).in(id: ['b', 'c'])
ai risultati in qualcosa di simile:
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b"]}}
options: {}
class: Contact
embedded: false>
Ma invece ottengo una sovrascrittura per tutti i casi immaginabili:
[1] pry(main)> Contact.in(id: ['a', 'b']).in(id: ['b', 'c'])
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b", "c"]}}
options: {}
class: Contact
embedded: false>
[2] pry(main)> Contact.in(id: ['a', 'b']).intersect.in(id: ['b', 'c'])
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b", "c"]}}
options: {}
class: Contact
embedded: false>
[3] pry(main)> Contact.in(id: ['a', 'b']).union.in(id: ['b', 'c'])
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>["b", "c"]}}
options: {}
class: Contact
embedded: false>
sto facendo un po ' cosa non va?
abbastanza interessante, se uso il nome del campo diverso da 'id' -' _id' o qualsiasi nome di campo a caso, funziona correttamente. L'uso di '_id' nel tuo caso potrebbe essere un modo per andare, ma sembra ancora un bug. –
In realtà, si comporterebbe in questo strano modo non solo con '_id' ma anche con alias di campo. Penso di sapere come risolverlo in Origin. –
Questa è la soluzione, grazie. Funziona usando '' '_id'''. Devo aprire un problema per il progetto Origin su github? O poiché sai come risolverlo, apri una richiesta di pull? Sarebbe bello! – Phil