0

私はモンゴイドモデルのRailsアプリを持っています。このモデルには整数のカウンターフィールドがあります。ブール値にキャストされたこのフィールドでエントリを並べ替えたい

MyModel.desc("counter::boolean") # casting in postgres-like syntax

したがって、counter> 0のエントリが最初になり、counter==0のエントリが最後になります。

また、この式でcreated_atソートを使用します。これは、同じ値のcounterに対してのみ正しく機能するため、2つの可能な値のみが必要です。必ずしも真/偽である必要はなく、1/0である可能性があります。

Mongodbは、カスタムの並べ替え機能をサポートしていません(オープンチケットがあります)。

そのようなキャストはmongoid/mongodbで行うことができますか?いいえの場合、おそらく回避策はありますか?

4

1 に答える 1

1

あまりきれいな方法ではありませんが、次のように、並べ替えスキームに正確に依存する値を持つドキュメントに追加のフィールドを作成する場合があります。「順序」: 値をブール値にキャストし、それによって並べ替えます。
驚くべきことに、これは mongodb の制限を回避するための非常に一般的な方法です。

于 2012-12-06T13:25:33.287 に答える