2

在谷歌App Engine的NDB,說我需要一個實體:重複屬性可以用作NDB中的常規屬性嗎?

  • 有時包含字符串
  • 包含有時串
  • 領域是從來沒有要求
  • 我從來不需要兩者的列表同時

鑑於查詢上重複屬性與單個元素的工作方式相同與非重複的特性,會不會有性能差異或即使我有時將它用作常規的StringProperty,也存在單個重複字段的缺點? (撇開具有用於重複和不重複的不同字段的更好的可讀性)

基本上:

class model1(ndb.Model): 
    str1 = ndb.StringProperty(repeated=True) 

VS

class model2(ndb.Model): 
    str1 = ndb.StringProperty() 
    str2 = ndb.StringProperty(repeated=True) 

感謝。

回答

0

當然是的,但該字段將是一個列表。 如果你不存儲任何東西,它將是一個空的列表。如果添加一個字符串,它將成爲一個具有一個值的列表。

請記住,因爲這一領域將是一個列表,然後添加從一個元素列表查詢與當值只需要調用「field.append(yourstring)

+0

謝謝,會不會有成本/性能損失單個字段? – Borja

+0

沒有,因爲他們有索引。即使你有1000個元素,成本也是相同的 – janscas