1

私は次のオブジェクトを持っています:

class Node
  include Mongoid::Document
  include Mongoid::Tree

   field :path, type: Array
end

配列はツリー内のpathグローバル位置を格納するために使用されるため、ルート ノードにはその位置が格納され{ path: [0] }、子ノードにはその位置とルート位置が格納されます。{ path: [0, 0] }

それらをクエリしてNode.asc(:path)からパスを尋ねると、次のような結果が得られます。

[[3, 0, 0],
 [7, 0],         # WTF?
 [3, 0],
 [2, 0, 1],
 [2, 0],
 [2, 0, 0, 0],
 [0],
 …
]

ただし、Ruby で順序付けを行うと、正しい結果が得られます。

[[0],
 [2],
 [2, 0],
 [2, 0, 0],
 [2, 0, 0, 0],
 [2, 0, 1],
 [2, 0, 1, 0],
 [3],
 …
]

MongoDB で何が起こっているのですか?これはインデックス作成に関連していますか?

4

0 に答える 0