私は次のオブジェクトを持っています:
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 で何が起こっているのですか?これはインデックス作成に関連していますか?