получить модель с хотя бы одним объектом отношения в монгоиде - PullRequest
4 голосов
/ 18 ноября 2011

У меня есть объект Person, который has_many компании.Я хотел бы получить человека по крайней мере с одной компанией.То, что я могу получить прямо сейчас, это

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

Это вернет всех людей с одной компанией.Но мне нужно что-то вроде

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

Но, похоже, это не сработает.

Решение:

Извините за все неприятности, но обнаружил, что с ранее созданнымобъекты, у меня не было company_ids ... так как я только добавил это позже.Я могу получить счет следующим образом:

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

Спасибо всем за помощь.

Ответы [ 3 ]

4 голосов
/ 21 ноября 2011

Вы должны быть в состоянии сделать:

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

4 голосов
/ 18 ноября 2011

Полагаю, что company_ids поле массива в личном документе

Боюсь, что невозможно указать условия в размере.Но есть обходной путь, использующий javascript $, где выражение

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

не уверен, как передать это выражение в mongoid.

EDIT

да, вы можете сделать это и с mongoid

Person.where("$where" =>  'this.company_ids.length >0;' )
3 голосов
/ 18 ноября 2011

Вы проверили, как

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

...