命名空間查詢

命名空間查詢。

深入探索

如需包含這個程式碼範例的詳細說明文件,請參閱下列內容:

程式碼範例

C#

如要瞭解如何安裝及使用 Datastore 模式的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Datastore 模式 C# API 參考說明文件

如要驗證 Datastore 模式,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

KeyFactory keyFactory = _db.CreateKeyFactory("__namespace__");
// List all the namespaces between a lower and upper bound.
string lowerBound = _db.NamespaceId.Substring(0,
    _db.NamespaceId.Length - 1);
string upperBound = _db.NamespaceId + "z";
Key startNamespace = keyFactory.CreateKey(lowerBound);
Key endNamespace = keyFactory.CreateKey(upperBound);
Query query = new Query("__namespace__")
{
    Filter = Filter.And(
        Filter.GreaterThan("__key__", startNamespace),
        Filter.LessThan("__key__", endNamespace))
};
var namespaces = new List<string>();
foreach (Entity entity in _db.RunQuery(query).Entities)
{
    namespaces.Add(entity.Key.Path[0].Name);
};

Go

如要瞭解如何安裝及使用 Datastore 模式的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Datastore 模式 Go API 參考說明文件

如要驗證 Datastore 模式,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。


func metadataNamespaces(w io.Writer, projectID string) error {
	// projectID := "my-project"

	ctx := context.Background()
	client, err := datastore.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("datastore.NewClient: %w", err)
	}
	defer client.Close()

	start := datastore.NameKey("__namespace__", "g", nil)
	end := datastore.NameKey("__namespace__", "h", nil)
	query := datastore.NewQuery("__namespace__").
		FilterField("__key__", ">=", start).
		FilterField("__key__", "<", end).
		KeysOnly()
	keys, err := client.GetAll(ctx, query, nil)
	if err != nil {
		return fmt.Errorf("client.GetAll: %w", err)
	}

	fmt.Fprintln(w, "Namespaces:")
	for _, k := range keys {
		fmt.Fprintf(w, "\t%v", k.Name)
	}
	return nil
}

Java

如要瞭解如何安裝及使用 Datastore 模式的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Datastore 模式 Java API 參考說明文件

如要驗證 Datastore 模式,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

KeyFactory keyFactory = datastore.newKeyFactory().setKind("__namespace__");
Key startNamespace = keyFactory.newKey("g");
Key endNamespace = keyFactory.newKey("h");
Query<Key> query =
    Query.newKeyQueryBuilder()
        .setKind("__namespace__")
        .setFilter(
            CompositeFilter.and(
                PropertyFilter.gt("__key__", startNamespace),
                PropertyFilter.lt("__key__", endNamespace)))
        .build();
List<String> namespaces = new ArrayList<>();
QueryResults<Key> results = datastore.run(query);
while (results.hasNext()) {
  namespaces.add(results.next().getName());
}

Node.js

如要瞭解如何安裝及使用 Datastore 模式的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Datastore 模式 Node.js API 參考說明文件

如要驗證 Datastore 模式,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

async function runNamespaceQuery(startNamespace, endNamespace) {
  const startKey = datastore.key(['__namespace__', startNamespace]);
  const endKey = datastore.key(['__namespace__', endNamespace]);

  const query = datastore
    .createQuery('__namespace__')
    .select('__key__')
    .filter(
      and([
        new PropertyFilter('__key__', '>=', startKey),
        new PropertyFilter('__key__', '<', endKey),
      ]),
    );

  const [entities] = await datastore.runQuery(query);
  const namespaces = entities.map(entity => entity[datastore.KEY].name);

  console.log('Namespaces:');
  namespaces.forEach(namespace => console.log(namespace));

  return namespaces;
}

PHP

如要瞭解如何安裝及使用 Datastore 模式的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Datastore 模式 PHP API 參考說明文件

如要驗證 Datastore 模式,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

$query = $datastore->query()
    ->kind('__namespace__')
    ->projection(['__key__'])
    ->filter('__key__', '>=', $datastore->key('__namespace__', $start))
    ->filter('__key__', '<', $datastore->key('__namespace__', $end));
$result = $datastore->runQuery($query);
/* @var array<string> $namespaces */
$namespaces = [];
foreach ($result as $namespace) {
    $namespaces[] = $namespace->key()->pathEnd()['name'];
}

Python

如要瞭解如何安裝及使用 Datastore 模式的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Datastore 模式 Python API 參考說明文件

如要驗證 Datastore 模式,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

from google.cloud import datastore

# For help authenticating your client, visit
# https://cloud.google.com/docs/authentication/getting-started
client = datastore.Client()

# All namespaces
query = client.query(kind="__namespace__")
query.keys_only()

all_namespaces = [entity.key.id_or_name for entity in query.fetch()]

# Filtered namespaces
start_namespace = client.key("__namespace__", "g")
end_namespace = client.key("__namespace__", "h")
query = client.query(kind="__namespace__")
query.key_filter(start_namespace, ">=")
query.key_filter(end_namespace, "<")

filtered_namespaces = [entity.key.id_or_name for entity in query.fetch()]

Ruby

如要瞭解如何安裝及使用 Datastore 模式的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Datastore 模式 Ruby API 參考說明文件

如要驗證 Datastore 模式,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

query = datastore.query("__namespace__")
                 .select("__key__")
                 .where("__key__", ">=", datastore.key("__namespace__", "g"))
                 .where("__key__", "<", datastore.key("__namespace__", "h"))

namespaces = datastore.run(query).map do |entity|
  entity.key.name
end

後續步驟

如要搜尋及篩選其他 Google Cloud 產品的程式碼範例,請參閱Google Cloud 範例瀏覽器