2013-02-17 2 views
0

В MongoDB вы можете использовать команду какMongoid отчетливый с соответствующими

db.sessions.distinct("Ip",{ 'Application': '123'}) 

который вернет все уникальные IP для выбранного приложения. Как это сделать через Mongoid?

Я пытаюсь передать 2 аргумента в distinct функции, но он терпит неудачу с исключением 'ArgumentError: wrong number of arguments (2 for 1)'

ответ

-1

Показать вам полный отчетливый запрос, пожалуйста. Я стараюсь следовать синтаксис с коллекцией пользователей (3 документов с именем Боба):

db.users.distinct("_id", {name: "Bob"}) 

И это работает:

[ 
     ObjectId("5121792d499af102889f2576"), 
     ObjectId("5121792e499af102889f2577"), 
     ObjectId("5121792f499af102889f2578") 
] 

Моя MongoDB версия 2.2.0

+0

Я знаю, что это работает в mongodb. Проблемы с монгодской структурой. Внимательно прочитайте вопрос. – Ph0en1x

+0

Извините) Я думаю о MongoId, а не о кармане. Возможно, этот код может помочь: 'Sessions.where (: Application => 123) .distinct (: Ip)' –

+0

Да, в настоящее время я реализую его таким образом. – Ph0en1x

1

Distinct в Mongoid занимает одно аргумент - поле, которое вы хотите фильтровать. Так что в вашем случае, вы можете приковать пункт where ж/distinct как так:

YourModel.where(Application: '123').distinct(:Ip) 

Это будет производить набор различных YourModel ых поле Ip, где поле Application равно «123».

Смежные вопросы