2012-04-28 2 views
0

Я создаю приложение, в котором пользователи могут делать проверки в некоторых местах, поэтому место может содержать много проверок, и пользователь может регистрироваться так часто, как он хочетПолучите отличных пользователей в списке, используя mongomapper

Имея место и список учетных записей, я могу видеть пользователей, но если пользователь зарегистрировал более одного раза, список пользователей будет содержать дублированных пользователей.

Как я могу получить четкий список пользователей, проверяемых в в определенном месте, я использую mongomapper

+0

Я видел эту тему http://stackoverflow.com/questions/9098605/querying-distinct-with-mongomapper, но мне кажется, что мне нужно что-то вроде Place.find ('someid'). Checkins.distinct (: user) –

+0

Теперь моя опция создала метод, который фильтрует список пользователей, возвращающих другой список с разными пользователями. –

ответ

0

Если возвраты заделаны, вы будете иметь, чтобы сделать ваш «отчетливый» фильтрации с Ruby's uniq.

Если возвраты простые Mongo документы, такие как следующие:

{ 
    _id:  ObjectId("123abc"), 
    place_id: ObjectId("123abc"), 
    user_id: ObjectId("123abc") 
} 

... то вы можете сделать CheckIns.where(:place_id => my_place.id).distinct(:user_id). Затем сопоставьте их пользователям.

Из очень небольшой информации, которую вы указали о своей схеме, похоже, что ваши данные сильно реляционные. Вам может быть лучше с реляционной базой данных.

+0

да, checkin - это документ mongo, метод, который вы показали, работал для меня. Mongomapper api дает мне методы для создания ассоциаций, есть ли недостатки, связанные с отношениями в нереляционной базе данных? В этом конкретном случае я не забочусь о реляционной целостности. –

+0

Чтобы получить все преимущества отношений в Mongo, вам нужно избегать встраивания, и что * может * быть хитом производительности (без объединения). Если вы не ограничены по производительности (большую часть времени вы не будете), или вам не нужна реляционная целостность, основанная на базе данных, тогда вы в порядке. Вне производительности, самая большая вещь, которую вы получаете с помощью ActiveRecord над MongoMapper, имеет has_many: через (например, «join tables»). Захватывать таблицы действительно приятно, когда вам нужно хранить информацию о * отношениях *. Вы можете сделать это в MongoMapper вручную, но вы просто не получите столько синтаксического сахара, чтобы это сделать. –