簡體   English   中英

如何在作為OrientDB中對象列表的屬性上創建索引?

[英]How to create an index over an property which is a list of objects in OrientDB?

我想要一個存儲這樣的結構的類:

{
  name: "blabla",
  metaData: [ {a: "mya"}, { a:"mya2"} ]  
}

`

現在,我想在metaData [?]上建立一個索引 一個領域。

  1. 在模式中表示此metaData的最佳方法是什么? 作為EmbeddedList?
  2. 是否可以擁有我想要的索引?
  3. 如果是這樣,通過“ a”值檢索實體的查詢應該是誰?
  4. 或者,如果我們有一個名為“ myAs”的字段(它是一個簡單的字符串數組)而不是該metaData,是否會更容易?

請注意,我正在使用Node.JS Oriento庫。

我不知道您想要的索引是否可行,但是如果您按照第4點的說明進行操作,則可以定義一個索引(我將其定義為unique ,但其他索引也可以使用)。

你可以:

create class Test
create property Test.name string
create property Test.metaData embeddedlist string

insert into Test set name = 'blabla', metaData = ['mya', 'mya2']

CREATE INDEX Test.metaData UNIQUE

insert into Test set metaData = ['mya', 'mya2'] # this will throw an exception

您在第3點中詢問的查詢可能類似於:

select from Test where 'mya' in metaData

UPDATE

您還可以索引一個嵌入式地圖。 (請參閱此處

create property Test.metaDataTwo embeddedmap string
create index myIndex on Test (metaDataTwo by value) unique

insert into Test set name = 'blabla', metaDataTwo = {'prop1':'value1', 'prop2':'value2'}
insert into Test set metaDataTwo = {'prop3':'value1'}  # this will throw an exception

使用該索引的查詢應為:

select from Test where ( metaDataTwo containskey 'prop1' ) and (  metaDataTwo['prop1'] = 'value1' )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM