Entity, Properti, dan Kunci

Objek data di Firestore dalam mode Datastore disebut sebagai entity. Entity memiliki satu atau beberapa properti yang telah diberi nama, yang masing-masing dapat memiliki satu atau beberapa nilai. Entity dari jenis yang sama tidak harus memiliki properti yang sama, dan nilai suatu entity untuk properti tertentu tidak semuanya harus memiliki jenis data yang sama. (Jika perlu, aplikasi dapat membuat dan menerapkan pembatasan tersebut dalam model datanya sendiri.)

Mode Datastore mendukung berbagai jenis data untuk nilai properti. Hal ini mencakup, antara lain:

  • Bilangan bulat
  • Angka floating-point
  • String
  • Tanggal
  • Data biner

Setiap entity dalam database mode Datastore memiliki kunci yang secara unik mengidentifikasinya. Kunci ini terdiri dari komponen berikut:

  • Namespace entity, yang memungkinkan multitenancy
  • Jenis entity, yang mengategorikannya untuk tujuan kueri
  • ID untuk masing-masing entitas, yang dapat berupa
    • string nama kunci
    • ID numerik bilangan bulat
  • Jalur ancestor opsional yang mencari entity dalam hierarki database

Aplikasi dapat mengambil setiap entity dari database menggunakan kunci entity, atau mengambil satu atau beberapa entity dengan mengeluarkan kueri berdasarkan kunci entity atau nilai properti.

Firestore dalam mode Datastore sendiri tidak menerapkan batasan apa pun pada struktur entity, seperti apakah properti tertentu memiliki nilai dari jenis tertentu; hal ini bebas ditentukan oleh aplikasi.

Cuplikan di halaman ini dibuat berdasarkan contoh di Memulai Firestore dalam mode Datastore.

Menggunakan entity

Aplikasi dapat menggunakan Firestore dalam mode Datastore API untuk membuat, mengambil, memperbarui, dan menghapus entity. Jika aplikasi mengetahui kunci lengkap untuk suatu entity (atau dapat memperolehnya dari kunci, jenis, dan ID parent-nya), aplikasi dapat menggunakan kunci tersebut untuk beroperasi secara langsung pada entity. Aplikasi juga bisa memperoleh kunci entity sebagai hasil dari kueri; lihat topik Kueri untuk informasi selengkapnya.

Membuat entity

Anda membuat entity baru dengan melakukan inisialisasi dan menetapkan propertinya:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task = new Entity()
{
    Key = _db.CreateKeyFactory("Task").CreateKey("sampleTask"),
    ["category"] = "Personal",
    ["done"] = false,
    ["priority"] = 4,
    ["description"] = "Learn Cloud Datastore"
};

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

type Task struct {
	Category        string
	Done            bool
	Priority        float64
	Description     string `datastore:",noindex"`
	PercentComplete float64
	Created         time.Time
}
task := &Task{
	Category:        "Personal",
	Done:            false,
	Priority:        4,
	Description:     "Learn Cloud Datastore",
	PercentComplete: 10.0,
	Created:         time.Now(),
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key taskKey = datastore.newKeyFactory().setKind("Task").newKey("sampleTask");
Entity task =
    Entity.newBuilder(taskKey)
        .set("category", "Personal")
        .set("done", false)
        .set("priority", 4)
        .set("description", "Learn Cloud Datastore")
        .build();

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const task = {
  category: 'Personal',
  done: false,
  priority: 4,
  description: 'Learn Cloud Datastore',
};

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$task = $datastore->entity('Task', [
    'category' => 'Personal',
    'done' => false,
    'priority' => 4,
    'description' => 'Learn Cloud Datastore'
]);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

task = datastore.Entity(client.key("Task"))
task.update(
    {
        "category": "Personal",
        "done": False,
        "priority": 4,
        "description": "Learn Cloud Datastore",
    }
)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

task = datastore.entity "Task" do |t|
  t["category"] = "Personal"
  t["done"] = false
  t["priority"] = 4
  t["description"] = "Learn Cloud Datastore"
end

Anda dapat menyimpan entity ke database menggunakan upsert (yang akan menimpa entity jika sudah ada dalam mode Datastore) atau insert (yang mengharuskan kunci entity belum ada).

Berikut cara upsert entitas:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

_db.Upsert(_sampleTask);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

key := datastore.IncompleteKey("Task", nil)
key, err := client.Put(ctx, key, task)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task = Entity.newBuilder(keyFactory.newKey("sampleTask")).build();
datastore.put(task);

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key('Task');
const task = {
  category: 'Personal',
  done: false,
  priority: 4,
  description: 'Learn Cloud Datastore',
};

const entity = {
  key: taskKey,
  data: task,
};

await datastore.upsert(entity);
// Task inserted successfully.

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$key = $datastore->key('Task', 'sampleTask');
$task = $datastore->entity($key, [
    'category' => 'Personal',
    'done' => false,
    'priority' => 4,
    'description' => 'Learn Cloud Datastore'
]);
$datastore->upsert($task);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

complete_key = client.key("Task", "sampleTask")

task = datastore.Entity(key=complete_key)

task.update(
    {
        "category": "Personal",
        "done": False,
        "priority": 4,
        "description": "Learn Cloud Datastore",
    }
)

client.put(task)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name = "sampleTask"
task = datastore.entity "Task", task_name do |t|
  t["category"] = "Personal"
  t["done"] = false
  t["priority"] = 4
  t["description"] = "Learn Cloud Datastore"
end
datastore.save task

Berikut cara insert entitas:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task = new Entity()
{
    Key = _keyFactory.CreateIncompleteKey()
};
task.Key = _db.Insert(task);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

taskKey := datastore.NameKey("Task", "sampleTask", nil)
_, err := client.RunInTransaction(ctx, func(tx *datastore.Transaction) error {
	// We first check that there is no entity stored with the given key.
	var empty Task
	if err := tx.Get(taskKey, &empty); err != datastore.ErrNoSuchEntity {
		return err
	}
	// If there was no matching entity, store it now.
	_, err := tx.Put(taskKey, &task)
	return err
})

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key taskKey = datastore.add(FullEntity.newBuilder(keyFactory.newKey()).build()).getKey();

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key('Task');
const task = {
  category: 'Personal',
  done: false,
  priority: 4,
  description: 'Learn Cloud Datastore',
};

const entity = {
  key: taskKey,
  data: task,
};

datastore.insert(entity).then(() => {
  // Task inserted successfully.
});

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$task = $datastore->entity('Task', [
    'category' => 'Personal',
    'done' => false,
    'priority' => 4,
    'description' => 'Learn Cloud Datastore'
]);
$datastore->insert($task);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

with client.transaction():
    incomplete_key = client.key("Task")

    task = datastore.Entity(key=incomplete_key)

    task.update(
        {
            "category": "Personal",
            "done": False,
            "priority": 4,
            "description": "Learn Cloud Datastore",
        }
    )

    client.put(task)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

datastore.transaction do |_tx|
  task = datastore.entity "Task" do |t|
    t["category"] = "Personal"
    t["done"] = false
    t["priority"] = 4
    t["description"] = "Learn Cloud Datastore"
  end
  datastore.save task
end

Mengambil entity

Untuk mengambil entity dari database, gunakan kuncinya untuk pencarian:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task = _db.Lookup(_sampleTask.Key);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

var task Task
taskKey := datastore.NameKey("Task", "sampleTask", nil)
err := client.Get(ctx, taskKey, &task)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task = datastore.get(taskKey);

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key('Task');
const [entity] = await datastore.get(taskKey);
// entity = {
//   category: 'Personal',
//   done: false,
//   priority: 4,
//   description: 'Learn Cloud Datastore',
//   [Symbol(KEY)]:
//    Key {
//      namespace: undefined,
//      id: '...',
//      kind: 'Task',
//      path: [Getter]
//    }
//   }
// };
console.log(entity);

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$task = $datastore->lookup($key);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

key = client.key("Task", "sampleTask")
task = client.get(key)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name = "sampleTask"
task_key = datastore.key "Task", task_name
task = datastore.find task_key

Memperbarui entity

Untuk update entity yang ada, ubah properti entity yang sebelumnya diambil dan simpan menggunakan kunci:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

_sampleTask["priority"] = 5;
_db.Update(_sampleTask);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

taskKey := datastore.NameKey("Task", "sampleTask", nil)
tx, err := client.NewTransaction(ctx)
if err != nil {
	log.Fatalf("client.NewTransaction: %v", err)
}
var task Task
if err := tx.Get(taskKey, &task); err != nil {
	log.Fatalf("tx.Get: %v", err)
}
task.Priority = 5
if _, err := tx.Put(taskKey, &task); err != nil {
	log.Fatalf("tx.Put: %v", err)
}
if _, err := tx.Commit(); err != nil {
	log.Fatalf("tx.Commit: %v", err)
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task;
Transaction txn = datastore.newTransaction();
try {
  task = Entity.newBuilder(txn.get(taskKey)).set("priority", 5).build();
  txn.put(task);
  txn.commit();
} finally {
  if (txn.isActive()) {
    txn.rollback();
  }
}

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key('Task');
const task = {
  category: 'Personal',
  done: false,
  priority: 4,
  description: 'Learn Cloud Datastore',
};

const entity = {
  key: taskKey,
  data: task,
};

await datastore.update(entity);
// Task updated successfully.

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$transaction = $datastore->transaction();
$key = $datastore->key('Task', 'sampleTask');
$task = $transaction->lookup($key);
$task['priority'] = 5;
$transaction->update($task);
$transaction->commit();

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

with client.transaction():
    key = client.key("Task", "sampleTask")
    task = client.get(key)

    task["done"] = True

    client.put(task)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name = "sampleTask"
datastore.transaction do |_tx|
  task = datastore.find "Task", task_name
  task["priority"] = 5
  datastore.save task
end

Data yang diberikan akan menimpa entity yang ada. Seluruh objek harus dikirim ke database. Jika entitas tidak ada, pembaruan akan gagal. Jika Anda ingin memperbarui atau membuat entitas, gunakan upsert seperti yang dijelaskan sebelumnya. Dengan menggunakan transaksi, Anda dapat melakukan operasi get dan update dalam satu transaksi atomik.

Menghapus entity

Dengan mempertimbangkan kunci entity, Anda dapat delete entity:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

_db.Delete(_sampleTask.Key);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

key := datastore.NameKey("Task", "sampletask", nil)
err := client.Delete(ctx, key)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

datastore.delete(taskKey);

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key('Task');
await datastore.delete(taskKey);
// Task deleted successfully.

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$datastore->delete($taskKey);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

key = client.key("Task", "sampleTask")
client.delete(key)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name = "sampleTask"
task_key = datastore.key "Task", task_name
datastore.delete task_key

Operasi batch

Firestore dalam mode Datastore mendukung versi batch operasi yang memungkinkannya beroperasi pada beberapa objek dalam satu panggilan mode Datastore.

Panggilan batch tersebut akan lebih cepat daripada membuat panggilan terpisah untuk setiap entity individual karena panggilan tersebut menimbulkan overhead hanya untuk satu panggilan layanan. Jika ada beberapa entity group yang terlibat, pekerjaan untuk semua grup akan dilakukan secara paralel di sisi server.

Misalnya, Anda dapat upsert beberapa entity:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

var taskList = new[]
{
    new Entity()
    {
        Key = _keyFactory.CreateIncompleteKey(),
        ["category"] = "Personal",
        ["done"] = false,
        ["priority"] = 4,
        ["description"] = "Learn Cloud Datastore"
    },
    new Entity()
    {
        Key = _keyFactory.CreateIncompleteKey(),
        ["category"] = "Personal",
        ["done"] = "false",
        ["priority"] = 5,
        ["description"] = "Integrate Cloud Datastore"
    }
};
var keyList = _db.Upsert(taskList[0], taskList[1]);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

tasks := []*Task{
	{
		Category:    "Personal",
		Done:        false,
		Priority:    4,
		Description: "Learn Cloud Datastore",
	},
	{
		Category:    "Personal",
		Done:        false,
		Priority:    5,
		Description: "Integrate Cloud Datastore",
	},
}
keys := []*datastore.Key{
	datastore.IncompleteKey("Task", nil),
	datastore.IncompleteKey("Task", nil),
}

keys, err := client.PutMulti(ctx, keys, tasks)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

FullEntity<IncompleteKey> task1 =
    FullEntity.newBuilder(keyFactory.newKey())
        .set("category", "Personal")
        .set("done", false)
        .set("priority", 4)
        .set("description", "Learn Cloud Datastore")
        .build();
FullEntity<IncompleteKey> task2 =
    Entity.newBuilder(keyFactory.newKey())
        .set("category", "Personal")
        .set("done", false)
        .set("priority", 5)
        .set("description", "Integrate Cloud Datastore")
        .build();
List<Entity> tasks = datastore.add(task1, task2);
Key taskKey1 = tasks.get(0).getKey();
Key taskKey2 = tasks.get(1).getKey();

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey1 = this.datastore.key(['Task', 1]);
const taskKey2 = this.datastore.key(['Task', 2]);

const task1 = {
  category: 'Personal',
  done: false,
  priority: 4,
  description: 'Learn Cloud Datastore',
};

const task2 = {
  category: 'Work',
  done: false,
  priority: 8,
  description: 'Integrate Cloud Datastore',
};

const entities = [
  {
    key: taskKey1,
    data: task1,
  },
  {
    key: taskKey2,
    data: task2,
  },
];

await datastore.upsert(entities);
// Tasks inserted successfully.

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$result = $datastore->upsertBatch($tasks);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

task1 = datastore.Entity(client.key("Task", 1))

task1.update(
    {
        "category": "Personal",
        "done": False,
        "priority": 4,
        "description": "Learn Cloud Datastore",
    }
)

task2 = datastore.Entity(client.key("Task", 2))

task2.update(
    {
        "category": "Work",
        "done": False,
        "priority": 8,
        "description": "Integrate Cloud Datastore",
    }
)

client.put_multi([task1, task2])

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

task_1 = datastore.entity "Task" do |t|
  t["category"] = "Personal"
  t["done"] = false
  t["priority"] = 4
  t["description"] = "Learn Cloud Datastore"
end

task_2 = datastore.entity "Task" do |t|
  t["category"] = "Personal"
  t["done"] = false
  t["priority"] = 5
  t["description"] = "Integrate Cloud Datastore"
end

tasks = datastore.save task_1, task_2
task_key_1 = tasks[0].key
task_key_2 = tasks[1].key

Anda dapat mencari beberapa entitas:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

var keys = new Key[] { _keyFactory.CreateKey(1), _keyFactory.CreateKey(2) };
var tasks = _db.Lookup(keys[0], keys[1]);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

var taskKeys []*datastore.Key // Populated with incomplete keys.
tasks := make([]*Task, len(taskKeys))
err := client.GetMulti(ctx, taskKeys, &tasks)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Iterator<Entity> tasks = datastore.get(taskKey1, taskKey2);

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey1 = this.datastore.key(['Task', 1]);
const taskKey2 = this.datastore.key(['Task', 2]);

const keys = [taskKey1, taskKey2];

const [tasks] = await datastore.get(keys);
// Tasks retrieved successfully.
console.log(tasks);

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$result = $datastore->lookupBatch($keys);
if (isset($result['found'])) {
    // $result['found'] is an array of entities.
} else {
    // No entities found.
}

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

keys = [client.key("Task", 1), client.key("Task", 2)]
tasks = client.get_multi(keys)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name_1 = "sampleTask1"
# task_name_2 = "sampleTask2"
task_key_1 = datastore.key "Task", task_name_1
task_key_2 = datastore.key "Task", task_name_2
tasks = datastore.find_all task_key_1, task_key_2

Anda dapat menghapus beberapa entity:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

var keys = new Key[] { _keyFactory.CreateKey(1), _keyFactory.CreateKey(2) };
_db.Delete(keys);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

err := client.DeleteMulti(ctx, taskKeys)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

datastore.delete(taskKey1, taskKey2);

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey1 = this.datastore.key(['Task', 1]);
const taskKey2 = this.datastore.key(['Task', 2]);

const keys = [taskKey1, taskKey2];

await datastore.delete(keys);
// Tasks deleted successfully.

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$result = $datastore->deleteBatch($keys);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

keys = [client.key("Task", 1), client.key("Task", 2)]
client.delete_multi(keys)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name_1 = "sampleTask1"
# task_name_2 = "sampleTask2"
task_key_1 = datastore.key "Task", task_name_1
task_key_2 = datastore.key "Task", task_name_2
datastore.delete task_key_1, task_key_2

Operasi batch tidak mengubah biaya baca, tulis, atau hapus, yang didokumentasikan di Harga dan Kuota. Anda akan dikenai biaya untuk setiap kunci dalam operasi batch, terlepas dari apakah setiap kunci ada atau tidak.

Ukuran entity yang terlibat dalam operasi tidak memengaruhi biaya baca, menulis, atau menghapus. Namun, ukuran entity memengaruhi biaya ukuran penyimpanan Anda.

Penambahan dan transformasi properti lainnya

Gunakan transformasi properti seperti increment untuk melakukan pembaruan sisi server pada properti. Transformasi properti menghindari operasi baca sisi klien tambahan untuk mendapatkan nilai saat ini dan menghindari penghitungan sisi klien untuk menentukan nilai baru.

Mode Datastore mendukung transformasi properti berikut:

  • increment
  • maximum
  • minimum
  • appendMissingElements
  • removeAllFromArray
  • setToServerValue(REQUEST_TIME)

Contoh berikut menunjukkan transformasi properti. Operasi ini menambahkan properti dengan nilai yang ditentukan:

REST

POST https://datastore.googleapis.com/v1/projects/{projectId}:commit
{
  "mode": "NON_TRANSACTIONAL",
  "mutations": [
    {
      "propertyMask": {},  // Empty write mask indicates only transforms can change the entity.
      "propertyTransforms": [
        {
          "property": "quantity",
          "increment": {
            "integerValue": 2
          }
        },
        {
          "property": "inStock",
          "maximum": {
            "integerValue": 100
          }
        },
      ]
      "upsert": {
        "key": {
          "path": [
            {
              "kind": "Items",
              "name": "entity_1"
            }
          ]
        }
      }
    }
  ]
}

Contoh berikut menetapkan nilai properti ke waktu saat server memproses permintaan dengan presisi milidetik.

REST

POST https://datastore.googleapis.com/v1/projects/{projectId}:commit
{
  "mode": "NON_TRANSACTIONAL",
  "mutations": [
    {
      "propertyMask": {},  // // Empty write mask indicates only transforms can change the entity.
      "propertyTransforms": [
        {
          "property": "timeField",
          "setToServerValue": "REQUEST_TIME"
        },
      ]
      "upsert": {
        "key": {
          "path": [
            {
              "kind": "Kind_1",
              "name": "entity_1"
            }
          ]
        }
      }
    }
  ]
}

Contoh berikut menambahkan elemen array jika tidak ada.

REST

POST https://datastore.googleapis.com/v1/projects/{projectId}:commit
{
  "mode": "NON_TRANSACTIONAL",
  "mutations": [
    {
      "propertyMask": {},  // Empty write mask indicates only transforms can change the entity.
      "propertyTransforms": [
        {
          "property": "arrayField",
          "appendMissingElements": {
            "values": [
              { "stringValue": "str" }, { "integerValue": 10 }
            ]
          }
        },
      ]
      "upsert": {
        "key": {
          "path": [
            {
              "kind": "Kind_1",
              "name": "entity_1"
            }
          ]
        }
      }
    }
  ]
}

Jenis campuran dengan maximum dan minimum

Transformasi properti maximum dan minimum menggunakan nilai bilangan bulat atau nilai ganda (angka floating point) sebagai input. Nilai dalam properti target juga dapat berupa bilangan bulat atau nilai ganda.

Jika properti bukan bilangan bulat atau ganda, atau jika properti tidak ada, transformasi akan menetapkan properti ke nilai dan jenis input yang diberikan. Jika operasi maximum diterapkan dengan properti dan nilai input dari jenis campuran (yaitu, satu adalah bilangan bulat dan satu lagi adalah bilangan ganda), properti akan menggunakan jenis operand yang lebih besar. Untuk minimum, properti menggunakan jenis operand yang lebih kecil.

Jika operand setara (misalnya 3 dan 3,0), properti tidak akan berubah. 0, 0,0, dan -0,0 semuanya nol. maximum atau minimum dari nilai yang disimpan nol dan nilai input nol selalu merupakan nilai yang disimpan. maximum atau minimum dari nilai numerik dan NaN adalah NaN.

Beberapa mutasi dan PropertyMask

Transformasi properti diterapkan secara berurutan setelah mutasi tambahan dalam permintaan. PropertyMask membatasi mutasi insert, update, dan upsert ke properti yang ditentukan, tetapi tidak membatasi transformasi properti.

Misalnya, mulai dengan entitas berikut:

REST

entity: {
  "key" : {
    "path": [
      {
        "kind": "Kind_1",
        "name": "entity_1"
      }
    ]
  }
  "properties" : {
    "a": 1,
    "b": 2,
    "c": 3
  }
}

Permintaan berikut akan memperbarui a dan b, lalu menerapkan transformasi properti ke properti b:

POST https://datastore.googleapis.com/v1/projects/{projectId}:commit
{
  "mode": "NON_TRANSACTIONAL",
  "mutations": [
    {
      "propertyMask": {"a", "b"},  // update property a, b
      "update": {
        "key": {
          "path": [
            {
              "kind": "Kind_1",
              "name": "entity_1"
            }
          ]
        }
        "properties": {
          "a" : "new_value",
          "b" : -2
        }
      },
      "propertyTransforms": [
        {
          "property": "b",
          "increment": { 
            "integerValue": 2
          }
        }
      ]
    }
  ]
}

Hasilnya adalah sebagai berikut:

REST

entity: {
  "key" : {
    "path": [
      {
        "kind": "Kind_1",
        "name": "entity_1"
      }
    ]
  }
  "properties" : {
    "a": "new_value",
    "b": 0,
    "c": 3
  }
}

Jenis dan ID

Setiap entity memiliki jenis tertentu, yang mengategorikan entity untuk tujuan kueri. Misalnya, aplikasi daftar tugas mungkin mewakili setiap tugas yang harus diselesaikan dengan entity jenis Task.

Semua jenis nama yang dimulai dengan dua garis bawah (__) dicadangkan dan tidak boleh digunakan.

Menetapkan ID

Selain jenis, setiap entity memiliki ID, yang ditetapkan saat entity dibuat. Karena ID tersebut merupakan bagian dari kunci entity, ID-nya dikaitkan secara permanen dengan entity dan tidak dapat diubah. ID tersebut dapat ditetapkan dengan salah satu dari dua cara berikut:

  • Aplikasi Anda dapat menentukan string key name-nya sendiri untuk entity.

    Untuk informasi tentang ukuran maksimum string kunci entitas, lihat Batas.

  • Anda dapat meminta Firestore dalam mode Datastore untuk menetapkan ID numerik bilangan bulat ke entity secara otomatis.

  • Untuk praktik terbaik dalam menetapkan ID, lihat bagian Kunci dalam praktik terbaik.

Contoh berikut membuat kunci dengan jenis Task yang menggunakan nama kunci, "sampleTask", sebagai ID:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key key = _db.CreateKeyFactory("Task").CreateKey("sampleTask");

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

taskKey := datastore.NameKey("Task", "sampletask", nil)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key taskKey = datastore.newKeyFactory().setKind("Task").newKey("sampleTask");

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key(['Task', 'sampleTask']);

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$taskKey = $datastore->key('Task', 'sampleTask');

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

key = client.key("Task", "sampleTask")

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name = "sampleTask"
task_key = datastore.key "Task", task_name

Mode Datastore juga dapat menetapkan ID secara otomatis. Mode Datastore menghasilkan urutan acak dari ID yang tidak digunakan yang kira-kira didistribusikan secara seragam. Setiap ID dapat memiliki maksimal 16 digit desimal.

Contoh berikut membuat kunci dengan jenis Task, tanpa menggunakan nama kunci. Kunci lengkap (termasuk ID yang ditetapkan secara otomatis) entity akan ditampilkan saat entity dengan kunci yang tidak lengkap disimpan ke mode Datastore:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key incompleteKey = _db.CreateKeyFactory("Task").CreateIncompleteKey();
Key key = _db.AllocateId(incompleteKey);

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

// A complete key is assigned to the entity when it is Put.
taskKey := datastore.IncompleteKey("Task", nil)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

KeyFactory keyFactory = datastore.newKeyFactory().setKind("Task");
Key taskKey = datastore.allocateId(keyFactory.newKey());

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key('Task');

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$taskKey = $datastore->key('Task');

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

key = client.key("Task")

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

task_key = datastore.key "Task"

Jika Anda ingin menampilkan ID entity kepada pengguna, dan/atau bergantung pada urutannya, sebaiknya Anda menggunakan alokasi manual.

Menetapkan ID numerik Anda sendiri

Daripada menggunakan string nama kunci atau membuat ID numerik secara otomatis, aplikasi lanjutan terkadang menetapkan ID numerik-nya sendiri secara manual ke entity yang dibuatnya. Namun, perhatikan bahwa tidak ada yang dapat mencegah database mode Datastore menetapkan salah satu ID numerik manual Anda ke entity lain. Satu-satunya cara untuk menghindari konflik tersebut adalah dengan membuat aplikasi Anda mendapatkan blok ID dengan metode allocateIds().

Generator ID otomatis mode Datastore akan melacak ID yang telah dialokasikan dengan metode ini dan akan menghindari penggunaannya kembali untuk entity lain, sehingga Anda dapat menggunakan ID tersebut dengan aman tanpa terjadi duplikasi. Anda tidak dapat memilih nilai yang ditampilkan oleh metode allocateIds() secara manual. Nilai yang ditampilkan oleh allocateIds() ditetapkan oleh mode Datastore.

Jalur ancestor

Entity dalam database mode Datastore membentuk ruang berstruktur hierarkis yang mirip dengan struktur direktori sistem file. Saat membuat entity, Anda dapat memilih untuk menetapkan entity lain sebagai parent; entity barunya adalah turunan dari parent entity tersebut (perlu diperhatikan bahwa tidak seperti dalam sistem file, entity induk tidak harus benar-benar ada). Entity tanpa induk adalah root entity. Kaitan entity dan induknya bersifat permanen, dan tidak dapat diubah setelah entity tersebut dibuat. Mode datastore tidak akan pernah menetapkan ID numerik yang sama ke dua entity dengan parent yang sama, atau ke dua root entity (yang tidak memiliki parent).

Entitas dapat memiliki beberapa tingkat ancestor dan descendant. Induk entity, induk dari induk, dan seterusnya secara rekursif adalah ancestor-nya; turunannya, turunan dari turunannya, dan seterusnya adalah turunan-nya. Urutan entity yang dimulai dengan root entity dan berlanjut dari induk ke turunan, yang mengarah ke entity tertentu, merupakan jalur ancestor entity tersebut. Kunci lengkap yang mengidentifikasi entity terdiri dari urutan pasangan jenis-ID yang menentukan jalur ancestor-nya dan berakhir dengan entity itu sendiri:

[User:alice, TaskList:default, Task:sampleTask]

Untuk root entity, jalur ancestor kosong dan kuncinya hanya terdiri dari jenis dan ID entity itu sendiri:

[User:alice]

Tingkat induk

Gunakan tingkat induk untuk mengatur data Anda. Misalnya, jika aplikasi Anda mengatur entity Task menurut entity TaskList, gunakan satu tingkat induk:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key rootKey = _db.CreateKeyFactory("TaskList").CreateKey("default");
Key key = new KeyFactory(rootKey, "Task").CreateKey("sampleTask");

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

parentKey := datastore.NameKey("TaskList", "default", nil)
taskKey := datastore.NameKey("Task", "sampleTask", parentKey)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key taskKey =
    datastore
        .newKeyFactory()
        .addAncestors(PathElement.of("TaskList", "default"))
        .setKind("Task")
        .newKey("sampleTask");

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key([
  'TaskList',
  'default',
  'Task',
  'sampleTask',
]);

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$taskKey = $datastore->key('TaskList', 'default')
    ->pathElement('Task', 'sampleTask');

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

key = client.key("TaskList", "default", "Task", "sampleTask")
# Alternatively
parent_key = client.key("TaskList", "default")
key = client.key("Task", "sampleTask", parent=parent_key)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_list_name = "default"
# task_name = "sampleTask"
task_key = datastore.key [["TaskList", task_list_name], ["Task", task_name]]

Jika aplikasi Anda mengatur entitas Task terlebih dahulu menurut entitas User, lalu menurut entitas TaskList, gunakan beberapa tingkat induk:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Key rootKey = _db.CreateKeyFactory("User").CreateKey("Alice");
Key taskListKey = new KeyFactory(rootKey, "TaskList").CreateKey("default");
Key key = new KeyFactory(taskListKey, "Task").CreateKey("sampleTask");

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

userKey := datastore.NameKey("User", "alice", nil)
parentKey := datastore.NameKey("TaskList", "default", userKey)
taskKey := datastore.NameKey("Task", "sampleTask", parentKey)

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

KeyFactory keyFactory =
    datastore
        .newKeyFactory()
        .addAncestors(PathElement.of("User", "Alice"), PathElement.of("TaskList", "default"))
        .setKind("Task");
Key taskKey = keyFactory.newKey("sampleTask");

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const taskKey = datastore.key([
  'User',
  'alice',
  'TaskList',
  'default',
  'Task',
  'sampleTask',
]);

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$taskKey = $datastore->key('User', 'alice')
    ->pathElement('TaskList', 'default')
    ->pathElement('Task', 'sampleTask');

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

key = client.key("User", "alice", "TaskList", "default", "Task", "sampleTask")

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# user_name = "alice"
# task_list_name = "default"
# task_name = "sampleTask"
task_key = datastore.key([
                           ["User", user_name],
                           ["TaskList", task_list_name],
                           ["Task", task_name]
                         ])

Seperti yang ditunjukkan pada contoh sebelumnya, saat membuat entity dengan induk, Anda menentukan jalur ancestor lengkap induk.

Aplikasi yang mengelola profil pengguna mungkin hanya memerlukan satu tingkat induk untuk data profil pengguna. Misalnya, gunakan jalur ancestor User satu tingkat untuk entity Profile:

[User:alice, Profile:public]

Aplikasi yang menyediakan penjadwalan ruang konferensi mungkin memerlukan beberapa tingkat induk, seperti jalur ancestor Building/Floor beberapa tingkat untuk entitas Room:

[Building:C, Floor:1, Room:123]

Entity group

Entity group terdiri dari entity root dan semua turunannya. Aplikasi biasanya menggunakan grup entity untuk mengatur data yang sangat terkait. Misalnya, aplikasi dapat menggunakan grup entity untuk menyimpan data tentang satu produk, atau satu profil pengguna.

Properti dan jenis nilai

Nilai data yang terkait dengan entity terdiri dari satu atau beberapa properti. Setiap properti memiliki nama dan satu atau beberapa nilai.

Properti dapat memiliki nilai yang berisi lebih dari satu jenis, dan dua entity dapat memiliki nilai dari jenis yang berbeda untuk properti yang sama. Properti dapat diindeks atau tidak diindeks (kueri yang mengurutkan atau memfilter pada properti p akan mengabaikan entity jika p tidak diindeks).

Beberapa contoh properti:

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task = new Entity()
{
    Key = _db.CreateKeyFactory("Task").CreateKey("sampleTask"),
    ["category"] = "Personal",
    ["created"] = new DateTime(1999, 01, 01, 0, 0, 0, DateTimeKind.Utc),
    ["done"] = false,
    ["priority"] = 4,
    ["percent_complete"] = 10.0,
    ["description"] = new Value()
    {
        StringValue = "Learn Cloud Datastore",
        ExcludeFromIndexes = true
    },
};

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

type Task struct {
	Category        string
	Done            bool
	Priority        int
	Description     string `datastore:",noindex"`
	PercentComplete float64
	Created         time.Time
}
task := &Task{
	Category:        "Personal",
	Done:            false,
	Priority:        4,
	Description:     "Learn Cloud Datastore",
	PercentComplete: 10.0,
	Created:         time.Now(),
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task =
    Entity.newBuilder(taskKey)
        .set("category", "Personal")
        .set("created", Timestamp.now())
        .set("done", false)
        .set("priority", 4)
        .set("percent_complete", 10.0)
        .set(
            "description",
            StringValue.newBuilder("Learn Cloud Datastore").setExcludeFromIndexes(true).build())
        .build();

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const task = [
  {
    name: 'category',
    value: 'Personal',
  },
  {
    name: 'created',
    value: new Date(),
  },
  {
    name: 'done',
    value: false,
  },
  {
    name: 'priority',
    value: 4,
  },
  {
    name: 'percent_complete',
    value: 10.0,
  },
  {
    name: 'description',
    value: 'Learn Cloud Datastore',
    excludeFromIndexes: true,
  },
];

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$task = $datastore->entity(
    $key,
    [
        'category' => 'Personal',
        'created' => new DateTime(),
        'done' => false,
        'priority' => 4,
        'percent_complete' => 10.0,
        'description' => 'Learn Cloud Datastore'
    ],
    ['excludeFromIndexes' => ['description']]
);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

import datetime

key = client.key("Task")
task = datastore.Entity(key, exclude_from_indexes=("description",))
task.update(
    {
        "category": "Personal",
        "description": "Learn Cloud Datastore",
        "created": datetime.datetime.now(tz=datetime.timezone.utc),
        "done": False,
        "priority": 4,
        "percent_complete": 10.5,
    }
)
client.put(task)

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

task = datastore.entity "Task" do |t|
  t["category"] = "Personal"
  t["created"] = Time.now
  t["done"] = false
  t["priority"] = 4
  t["percent_complete"] = 10.0
  t["description"] = "Learn Cloud Datastore"
  t.exclude_from_indexes! "description", true
end

Properti array

Properti dengan lebih dari satu nilai disebut properti array. Contoh ini berisi dua properti array. Yang pertama bernama tags dengan nilai fun dan programming. Yang kedua bernama collaborators dengan nilai alice dan bob.

C#

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task = new Entity()
{
    Key = _db.CreateKeyFactory("Task").CreateKey("sampleTask"),
    ["collaborators"] = new ArrayValue() { Values = { "alice", "bob" } },
    ["tags"] = new ArrayValue() { Values = { "fun", "programming" } }
};

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

type Task struct {
	Tags          []string
	Collaborators []string
}
task := &Task{
	Tags:          []string{"fun", "programming"},
	Collaborators: []string{"alice", "bob"},
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Entity task =
    Entity.newBuilder(taskKey)
        .set("tags", "fun", "programming")
        .set("collaborators", ListValue.of("alice", "bob"))
        .build();

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

const task = {
  tags: ['fun', 'programming'],
  collaborators: ['alice', 'bob'],
};

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

$task = $datastore->entity(
    $key,
    [
        'tags' => ['fun', 'programming'],
        'collaborators' => ['alice', 'bob']
    ]
);

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import datastore

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

key = client.key("Task")
task = datastore.Entity(key)
task.update({"tags": ["fun", "programming"], "collaborators": ["alice", "bob"]})

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud Datastore, lihat Library klien Cloud Datastore. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Cloud Datastore.

Untuk melakukan autentikasi ke Cloud Datastore, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# task_name = "sampleTask"
task = datastore.entity "Task", task_name do |t|
  t["tags"] = ["fun", "programming"]
  t["collaborators"] = ["alice", "bob"]
end

Properti array dapat berguna, misalnya, saat menjalankan kueri dengan filter kesetaraan: entity memenuhi kueri jika salah satu nilainya untuk properti cocok dengan nilai yang ditentukan di filter. Untuk mengetahui detail selengkapnya tentang properti array, termasuk masalah yang harus Anda ketahui, lihat topik Kueri.

Jenis nilai yang didukung

Properti disimpan sebagai peta string/value yang berisi nama dan nilai properti entity. Jenis berikut didukung untuk nilai:

Array

  • REST API

    • nama kolom: arrayValue
    • type: objek ArrayValue yang berisi array objek Nilai JSON
    • Properti array dapat ditetapkan menggunakan kolom arrayValue, yang berjenis ArrayValue, dan menetapkan kolom values-nya ke array nilai. Agar properti tidak diindeks, tetapkan kolom excludeFromIndexes dari objek nilai properti ke true.
  • RPC API

    • nama kolom: array_value
    • type: pesan ArrayValue yang berisi satu atau beberapa pesan Value
    • Properti array dapat ditetapkan menggunakan kolom array_value, yang berjenis ArrayValue, dan mengisi kolom values-nya dengan beberapa objek Value. Agar properti tidak diindeks, tetapkan kolom exclude_from_indexes dari Value ke true.
  • Tata urutan: Tidak ada

  • Catatan: Tidak dapat berisi nilai array lain. Instance nilai tidak boleh menetapkan meaning atau exclude_from_indexes.

Boolean

  • REST API
    • nama kolom: booleanValue
    • jenis: true atau false
  • RPC API
    • nama kolom: boolean_value
    • type: bool
  • Urutan pengurutan: false<true

Blob

  • REST API
    • nama kolom: blobValue
    • type: string. Harus dienkode dengan base64.
  • RPC API
    • nama kolom: blob_value
    • type: bytes
  • Urutan pengurutan: Urutan byte
  • Catatan: Hingga 1.500 byte jika properti diindeks, hingga 1.048.487 byte (1 MiB - 89 byte) jika tidak.

Tanggal dan waktu

  • REST API
    • nama kolom: timestampValue
    • type: string (diformat RFC 3339, dengan milidetik, misalnya 2013-05-14T00:01:00.234Z)
  • RPC API
    • nama kolom: timestamp_value
    • type: Timestamp
  • Tata urutan: Kronologis
  • Catatan:
    • Jika disimpan dalam mode Datastore, tingkat presisinya hanya hingga mikrodetik; presisi lainnya dibulatkan ke bawah.
    • Saat ditampilkan sebagai bagian dari kueri proyeksi, mode Datastore akan mengonversi nilai stempel waktu menjadi nilai bilangan bulat mikrodetik.

Entity tersemat

  • REST API
    • nama kolom: entityValue
    • type: entity JSON
  • RPC API
    • nama kolom: entity_value
    • jenis: pesan Entity
  • Tata urutan: Tidak ada
  • Catatan: Saat diindeks, Anda dapat membuat kueri pada sub-properti. Jika Anda mengecualikan nilai ini dari pengindeksan, semua sub-properti juga akan dikecualikan dari pengindeksan.

Angka floating-point

  • REST API
    • nama kolom: doubleValue
    • type: number
  • RPC API
    • nama kolom: double_value
    • type: double
  • Urutan pengurutan: Numerik
  • Catatan: Presisi ganda 64-bit, IEEE 754

Titik geografis

  • REST API
    • nama kolom: geoPointValue
    • type: pasangan lintang/bujur JSON
  • RPC API
    • nama kolom: geo_point_value
    • type: pesan LatLng
  • Urutan pengurutan: Menurut lintang, lalu bujur

Bilangan bulat

  • REST API
    • nama kolom: integerValue
    • type: number or string. Gunakan string untuk bilangan bulat yang tidak dapat direpresentasikan secara tepat sebagai angka.
  • RPC API
    • nama kolom: integer_value
    • type: int64
  • Urutan pengurutan: Numerik

Kunci

  • REST API
    • nama kolom: keyValue
    • type: kunci mode Datastore JSON
  • RPC API
    • nama kolom: key_value
    • type: pesan Key
  • Urutan pengurutan: Menurut elemen jalur (jenis, ID, jenis, ID...)

Null

  • REST API
    • nama kolom: nullValue
    • type: null
  • RPC API
    • nama kolom: null_value
    • type: NullValue
  • Tata urutan: Tidak ada

String teks

  • REST API
    • nama kolom: stringValue
    • type: string
  • RPC API
    • nama kolom: string_value
    • type: string
  • Urutan pengurutan: Urutan byte berenkode UTF-8
  • Catatan: Hingga 1.500 byte jika properti diindeks, hingga 1.048.487 byte (1 MiB - 89 byte) jika tidak.

Pengurutan jenis nilai

Jika kueri melibatkan properti dengan nilai jenis campuran, database mode Datastore menggunakan pengurutan deterministik berdasarkan representasi internal. Daftar berikut menunjukkan urutannya:

  1. Nilai null
  2. Angka fixed-point
    • Bilangan bulat
    • Tanggal dan waktu
  3. Nilai boolean
  4. String byte
  5. String unicode
  6. Angka floating-point
  7. Nilai NaN
  8. Titik geografis
  9. Kunci mode Datastore