1

属性の 1 つをそのリストへのインデックスとして使用して、リスト内のアイテムにアクセスするにはどうすればよいでしょうか?

テストスキーマは次のとおりです。

create class Test extends V
insert into Test content {"items": [ { "name": "Item 1" }, { "name": "Item 2" } ], "selected": 1 }

新しいレコードの RID が #100:0 の場合、次のクエリは機能しません

select items[ @this.selected ].name from #100:0
select items[ eval('@this.selected') ].name from #100:0

私は何を間違っていますか?オリエント 2.1.8 を使用しています。

4

2 に答える 2

2

私はこの単純な構造を持っています:

ここに画像の説明を入力

探している結果を取得するために、次のクエリを使用しました。

select items[$i.sel].name from Test
let $i = (select eval('selected') as sel from #12:0)

出力:

----+------+------
#   |@CLASS|items
----+------+------
0   |null  |Item 1
1   |null  |Item 3
----+------+------

編集済み

またはこれ

select items[$i.sel].name from Test
let $i = (select eval('selected') as sel from #12:1)

出力:

----+------+------
#   |@CLASS|items
----+------+------
0   |null  |Item 2
1   |null  |Item 4
----+------+------

2回目の編集

クエリ 1 :

select items.name[$i.sel] from Test
let $i = (select *, eval('selected') as sel from 12:0)
where @this in $i

出力:

----+------+------
#   |@CLASS|items
----+------+------
0   |null  |Item 1
----+------+------

クエリ 2 :

select items.name[$i.sel] from 12:1
let $i = (select eval('selected') as sel from 12:0)

出力:

----+------+------
#   |@CLASS|items
----+------+------
0   |null  |Item 3
----+------+------

クエリ 3 :

select items[$i.selected].name from Test let $i = selected unwind items

出力:

----+------+------
#   |@CLASS|items
----+------+------
0   |null  |Item 1
1   |null  |Item 2
2   |null  |Item 3
3   |null  |Item 4
----+------+------

それが役に立てば幸い

于 2016-02-09T10:09:32.290 に答える