私はOrientDBを初めて使い、内部使用のためのテストアプリケーション(orientdb 2.2.17)を開発中です。OrientDB - サブクエリとリレーションシップを持つドキュメントを作成する
サブクエリを値の1つとして持つ新しいドキュメントをクラスに追加しようとしています。
クラス:
CREATE CLASS Website
CREATE PROPERTY Website.id String
CREATE PROPERTY Website.name String
CREATE PROPERTY Website.created DateTime
CREATE CLASS User
CREATE PROPERTY UserEndpoint.id String
CREATE PROPERTY UserEndpoint.website String
CREATE PROPERTY UserEndpoint.created DateTime
私はいくつかのウェブサイトを参照して、新しいユーザーを追加しようとしています。例えば
:
INSERT INTO Website (name) VALUES ('localhost:8090')
、その後ユーザーを追加するには:結果は、私が期待していたものではないです
INSERT INTO User (website) VALUES (SELECT id FROM Website WHERE)
OR
INSERT INTO User (website) VALUES (SELECT @rid FROM Website WHERE)
、User.website
パラメータではなく、配列を表す文字列であります単一の値を表す文字列を返します。
{
"result": [
{
"@type": "d",
"@rid": "#30:0",
"@version": 1,
"@class": "User",
"created": "2017-12-28T16:35:31",
"id": "a9816adc-8808-4673-b5a7-b11493b0ce36",
"website": "[Website#25:0{created:Thu Dec 28 16:34:25 UTC 2017,id:e0ce0e68-003b-4a01-8c4f-856d9eeb6125,name:localhost:56} v1]"
}
]
"notification": "..." }
予想:
{
"result": [
{
"@type": "d",
"@rid": "#30:0",
"@version": 1,
"@class": "User",
"created": "2017-12-28T16:35:31",
"id": "a9816adc-8808-4673-b5a7-b11493b0ce36",
"website": "#25:0"
}
]
"notification": "..." }
そして私はまた、ウェブサイトや、ユーザー(使用者がユーザーの多くを持っているかもしれない1つのウェブサイトやウェブサイトに属している)との関係を作りたい、これが正しい方法です:
CREATE LINK websiteUsers TYPE LINKSET FROM User.website TO Website.rid
?
私はユーザーを照会しているが、ウェブサイトの詳細を取得したいが、自動的に追加するのか?