0

私は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に各サイズを投影することで解決します...しかし、は、カスタムソートを実行する任意の簡単な方法はありますか?

答えて

1

はいそこには簡単な方法はありませんが、あなたはあなたが $projectを使用することができ、指定さや大きさに応じた数の123を入れて置くよう

1)とそれを並べ替えるそれを行うには3つの方法を、持っている数字

あなたはsubstrは2文字でサイズ列ASCの2番目の文字を並べ替えることができます2)と、それは

3)その重量

+0

ONLに応じて、上の並べ替えに$textを使用して並べ替えy '$ substr'が最後から分割を実行できる場合、実際のサイズを示す最後の数字を得ることができます。これは完全に問題を解決するわけではありません。なぜなら、 'XS'と 'S'は同じ扱いになるからです。 – kaskelotti

+0

この文脈で '$ text'をどのように使うことができるのか少し説明できますか? – kaskelotti

関連する問題