mongodb では、次のようなコマンドを使用できます
db.sessions.distinct("Ip",{ 'Application': '123'})
これにより、選択したアプリケーションのすべての一意の IP が返されます。Mongoid 経由でそれを行う方法は?
関数で2つの引数を渡そうとしましdistinct
たが、例外で失敗しました'ArgumentError: wrong number of arguments (2 for 1)'
Mongoid の Distinct は引数を 1 つ取ります。つまり、distinct をフィルタリングするフィールドです。したがって、あなたの場合、次where
のように句を連鎖させることができますdistinct
:
YourModel.where(Application: '123').distinct(:Ip)
これにより、フィールド Application が「123」に等しい、フィールド Ip によって個別の YourModel のコレクションが生成されます。
完全な個別のクエリを表示してください。ユーザーコレクション(ボブという名前の3つのドキュメント)で構文に従ってみます:
db.users.distinct("_id", {name: "Bob"})
そしてそれは動作します:
[
ObjectId("5121792d499af102889f2576"),
ObjectId("5121792e499af102889f2577"),
ObjectId("5121792f499af102889f2578")
]
私のMongoDBのバージョンは2.2.0です