2013-02-17 25 views
0

MongoDB中,你可以使用命令狀mongoid不同的匹配

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

這將返回所有唯一的IP所選應用程序。如何通過Mongoid做到這一點?

我試圖通過2論點distinct功能,但它的異常失敗'ArgumentError: wrong number of arguments (2 for 1)'

回答

-1

顯示你完全不同的查詢,請。 我儘量遵循用戶集合語法(3個文檔與名爲Bob):

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

和它的作品:

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

我的MongoDB的版本是2.2.0

+0

我知道它在mongodb中有效。 Mongoid框架的問題。仔細閱讀問題。 – Ph0en1x 2013-02-18 01:28:37

+0

對不起)我想到MongoId,而不是框架。 也許這段代碼可以幫助:'Sessions.where(:Application => 123).distinct(:Ip)' – 2013-02-18 09:44:25

+0

是的,目前我是這樣實現的。 – Ph0en1x 2013-02-18 10:34:31

1

的不同之處在Mongoid需要一個參數 - 您希望過濾不同的字段。所以你的情況,你可以鏈接一個where條款瓦特/ distinct像這樣:

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

在領域中的應用等於「123」這將通過實地葉產生不同YourModel的集合。