Nosql 可以在Google云数据存储中查询没有子体的实体吗?

Nosql 可以在Google云数据存储中查询没有子体的实体吗?,nosql,google-cloud-datastore,datastore,gql,gqlquery,Nosql,Google Cloud Datastore,Datastore,Gql,Gqlquery,有没有一种方法可以返回在Google云数据存储中没有子体的实体?如果您的问题是是否可以检索到没有子体的实体,那么是的。您可以通过其键(或通过查询)检索任何实体 但是,如果您打算运行一个检索所有无子实体的查询,这将是不可能的。祖先信息存储在子实体中,因此您应该恢复所有实体的所有祖先密钥(通过),存储其祖先的所有密钥,然后对所有实体运行查询,检查那些不是任何实体祖先的实体 在shell中使用curl和jq,可以如下所示: export ancestors=$(gcurl -s -H'content-

有没有一种方法可以返回在Google云数据存储中没有子体的实体?

如果您的问题是是否可以检索到没有子体的实体,那么是的。您可以通过其键(或通过查询)检索任何实体

但是,如果您打算运行一个检索所有无子实体的查询,这将是不可能的。祖先信息存储在子实体中,因此您应该恢复所有实体的所有祖先密钥(通过),存储其祖先的所有密钥,然后对所有实体运行查询,检查那些不是任何实体祖先的实体

在shell中使用curl和jq,可以如下所示:

export ancestors=$(gcurl -s -H'content-type:application/json' "https://datastore.googleapis.com/v1/projects/$(gcloud config get-value project):runQuery?fields=batch%2FentityResults%2Fentity%2Fkey%2Fpath" -d"{
 \"partitionId\": {
  \"projectId\": \"$(gcloud config get-value project)\",
  \"namespaceId\": \"namespace_id\"
 },
 \"query\": {
  \"kind\": [
   {
    \"name\": \"descendant_entity_name\"
   }
  ],
  \"projection\": [
   {
    \"property\": {
     \"name\": \"__key__\"
    }
   }
  ]
 }
}" | jq '[.batch.entityResults[].entity.key.path | select(length > 1 ) | .[-2].id]')

gcurl -H'content-type:application/json' "https://datastore.googleapis.com/v1/projects/$(gcloud config get-value project):runQuery?fields=batch%2FentityResults%2Fentity%2Fkey%2Fpath" -d"{
 \"partitionId\": {
  \"projectId\": \"$(gcloud config get-value project)\",
  \"namespaceId\": \"namespace_id\"
 },
 \"query\": {
  \"kind\": [
   {
    \"name\": \"ancestor_entity_name\"
   }
  ],
  \"projection\": [
   {
    \"property\": {
     \"name\": \"__key__\"
    }
   }
  ]
 }
}" | jq '.batch.entityResults[].entity.key.path[-1].id | select(inside(env.ancestors)|not)'