【问题标题】:Datastore composite index for querying embedded entity用于查询嵌入式实体的数据存储复合索引
【发布时间】:2018-07-09 13:33:33
【问题描述】:

我有以下实体:

这是一个示例查询:

$list = 'My List';
$query->filter('isUnsubscribed.'.$list, '=', '0');  
$query->filter('methodAdded.'.$list, '=', 'Import'); 
$query->filter('dateAdded.'.$list, '<', '13.01.2018'); 

这就是问题所在:

如果我的索引是,一切正常:

- kind: Contacts
  ancestor: yes
  properties:
  - name: isUnsubscribed.My List
  - name: methodAdded.My List
  - name: dateAdded.My List

但我不能为每个列表创建索引,因为用户可以创建自己的列表。所以我尝试了这个索引,但它不起作用:

- kind: Contacts
  ancestor: yes
  properties:
  - name: isUnsubscribed
  - name: methodAdded
  - name: dateAdded

有没有办法在不指定嵌入实体中的属性(可能是通配符或其他东西)的情况下创建索引?

【问题讨论】:

    标签: google-cloud-datastore


    【解决方案1】:

    无法查询存储在属性名称中的用户数据(这也包括嵌入的属性名称)。始终构建您的数据,以便可变数据最终成为值,众所周知(由程序员)数据是种类/属性名称。

    在您的示例中,将isUnsubscribed 作为用户已取消订阅的列表的重复属性(数组) - 您当前拥有的所有列表都为 0 值。您可以为所有具有 1 的内容创建第二个列表 isSubscribed

    【讨论】:

    • 列表作为数组存储在属性 inList 中,我知道它们,我不想查询属性名称,我已经有了它们,我做了一个查询每个列表,我的数据在值中。问题是我想通过 dateAdded 使用不等式过滤器并且我需要一个索引,但我无法为每个列表创建索引 ("dateAdded.My List", "dateAdded.Test" , "dateAdded.Test 1") 因为一个用户可以有 3 个列表,而另一个可以有 300 个。有没有办法只使用主属性 dateAdded 创建索引?跨度>
    猜你喜欢
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多