私はMongoDBとその集約フレームワークを試しています。アンワインド操作では、配列フィールドを持つドキュメントを各配列インデックスの複数のドキュメントに分割できます。配列に自然な並べ替え順序のないデータがある場合、MongoDBでこれをどのようにソートできますか?カスタム(非自然順序)フィールドでドキュメントをソートする方法
例:
A製品コレクションは以下の文書を有する
{ "type" : "t-shirt", "size" : [ "S", "M", "L" ] }
{ "type" : "pants", "size" : [ "XS", "S", "M", "L", "XL" ] }
size
フィールドによって収集データを巻き戻した後(_idフィールドは省略)、結果が
{ "type" : "t-shirt", "size" : "S" }
{ "type" : "t-shirt", "size" : "M" }
{ "type" : "t-shirt", "size" : "L" }
{ "type" : "pants", "size" : "XS" }
{ "type" : "pants", "size" : "S" }
{ "type" : "pants", "size" : "M" }
{ "type" : "pants", "size" : "L" }
{ "type" : "pants", "size" : "XL" }
サイズでありますフィールドには自然順序付けがありません。例えば、XLとXSは、最初と最後の位置にソートする必要がありますが、互いに並べ替えられます。
私はmigthこれは最初、それに対応する数、すなわちXS = 1、S = 2に各サイズを投影することで解決します...しかし、は、カスタムソートを実行する任意の簡単な方法はありますか?
ONLに応じて、上の並べ替えに
$text
を使用して並べ替えy '$ substr'が最後から分割を実行できる場合、実際のサイズを示す最後の数字を得ることができます。これは完全に問題を解決するわけではありません。なぜなら、 'XS'と 'S'は同じ扱いになるからです。 – kaskelottiこの文脈で '$ text'をどのように使うことができるのか少し説明できますか? – kaskelotti