4 Stimmen

Modell mit mindestens einem Beziehungsobjekt in Mongoid holen

Ich habe ein Objekt "Person", das "viele Unternehmen" hat. Ich würde gerne die Person mit mindestens einem Unternehmen finden. Was ich im Moment bekommen kann ist

Person.where(:company_ids.size => 1)

Dies wird alle Personen mit einer Firma zurückbringen. Aber ich brauche etwas wie

Person.where(:company_ids.size.gte => 1)

Aber es scheint, dass dies nicht funktioniert.

Lösung:

sorry für die ganze Mühe, aber ich habe herausgefunden, dass ich bei vorher erstellten Objekten keine company_ids hatte ... da ich diese erst später hinzugefügt hatte. Ich kann die Anzahl mit folgendem erhalten:

Person.where(:company_ids.exists => true).and("this.company_ids.length > 0") 

Vielen Dank an alle, die mitgeholfen haben.

4voto

RameshVel Punkte 62428

Ich nehme an, company_ids ist ein Array-Feld im Personendokument

Ich fürchte, es gibt keine Möglichkeit der Angabe von Bedingungen in der Größe. Aber es gibt einen Workaround mit javascript $where Ausdruck

 db.person.find({$where: '(this.company_ids.length > 0)'})

bin nicht sicher, wie man diesen Ausdruck in Mongoid übergeben.

EDIT

Ja, das kann man auch mit Mongoid machen

Person.where("$where" =>  'this.company_ids.length >0;' )

4voto

Andrew K Punkte 1329

Sie sollten dazu in der Lage sein:

Person.where("this.company_ids.length > 3")

3voto

kriysna Punkte 5988

Haben Sie geprüft, ob Sie als

Person.where("this.company_ids >=1")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X