Entidades, propiedades y claves

Los objetos de datos de Cloud Firestore en modo Datastore se conocen como entidades. Una entidad posee una o más propiedades con nombre y cada una puede tener uno o más valores. No es necesario que las entidades del mismo tipo tengan las mismas propiedades y los valores de una entidad para una propiedad determinada no necesitan pertenecer al mismo tipo de datos. (Si fuera necesario, una aplicación puede establecer y aplicar esas restricciones en su propio modelo de dados).

El modo Datastore es compatible con una variedad de tipos de datos para valores de propiedad. Se incluyen, entre otros:

  • Enteros
  • Números de coma flotante
  • Strings
  • Fechas
  • Datos binarios

Cada entidad de una base de datos de modo Datastore tiene una clave que la identifica de manera única. La clave consta de los componentes siguientes:

  • El espacio de nombres de la entidad, que permite la función multiusuario
  • El tipo de la entidad, que la clasifica con el propósito de realizar consultas
  • Un identificador de la entidad individual, que puede ser de alguna de las clases siguientes:
    • una string de nombre de clave
    • un ID numérico de enteros
  • Una ruta principal opcional que ubica la entidad dentro de la jerarquía de la base de datos

Una aplicación puede recuperar una entidad individual de la base de datos con la clave de la entidad, o bien una o más entidades con una consulta basada en los valores de propiedad o las claves de las entidades.

Cloud Firestore en modo Datastore no aplica ninguna restricción en las estructuras de las entidades por sí misma. Por ejemplo, si una propiedad posee un valor de un tipo en particular, esta tarea le corresponde a la aplicación.

Los fragmentos de esta página se basan en el ejemplo de Introducción a Cloud Firestore en modo Datastore.

Trabajar con entidades

Las aplicaciones pueden usar la API de Cloud Firestore en modo Datastore para crear, recuperar, actualizar y borrar entidades. Si la aplicación conoce la clave completa de una entidad (o puede obtenerla del tipo, el identificador o la clave de la superior), puede usar la clave para operar directamente con la entidad. Una aplicación también puede obtener la clave de una entidad como resultado de una consulta. Para obtener más información, lee el tema Consultas.

Crear una entidad

Para crear una nueva entidad, debes inicializarla y establecer sus propiedades:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

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

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Puedes guardar la entidad en la base de datos con upsert (que reemplazará una entidad ya existente en el modo Datastore) o con insert (que requiere que ya no exista la clave de la entidad).

A continuación, te mostramos cómo realizar una operación de upsert en una entidad:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

_db.Upsert(_sampleTask);

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

key, err := client.Put(ctx, key, task)

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

complete_key = client.key('Task', 'sample_task')

task = datastore.Entity(key=complete_key)

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

client.put(task)

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

A continuación, te mostramos cómo realizar una operación de insert en una entidad:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

_, 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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Recuperar una entidad

Para recuperar una entidad a partir de la base de datos, utiliza su clave para un lookup:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

var task Task
err := client.Get(ctx, taskKey, &task)

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

Entity task = datastore.get(taskKey);

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

key = client.key('Task', 'sample_task')
task = client.get(key)

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Cómo actualizar una entidad

Para update una entidad existente, modifica las propiedades de la entidad recuperada con anterioridad y guárdala con la clave:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

Entity task = Entity.newBuilder(datastore.get(taskKey)).set("priority", 5).build();
datastore.update(task);

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

with client.transaction():
    key = client.key('Task', 'sample_task')
    task = client.get(key)

    task['done'] = True

    client.put(task)

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Los datos proporcionados reemplazan la entidad existente. El objeto completo se debe enviar a la base de datos. Si la entidad no existe, la actualización fallará. Si quieres actualizar o crear una entidad, utiliza upsert como se describió previamente. Utilizar una transacción te permite realizar las operaciones get y update en una sola transacción atómica.

Cómo borrar una entidad

Puedes delete una entidad con su clave de entidad:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

_db.Delete(_sampleTask.Key);

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

err := client.Delete(ctx, key)

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

datastore.delete(taskKey);

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

await datastore.delete(taskKey);
// Task deleted successfully.

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

$datastore->delete($taskKey);

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

key = client.key('Task', 'sample_task')
client.delete(key)

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Operaciones por lotes

Cloud Firestore en modo Datastore admite versiones por lotes de las operaciones que le permiten operar en varios objetos en una sola llamada del modo Datastore.

Hacer llamadas por lotes es más rápido que hacer llamadas por separado para cada entidad individual porque estas generan sobrecarga por solo una llamada al servicio. Si varios grupos de entidades están involucrados, el trabajo de todos los grupos se realiza en paralelo en el lado del servidor.

Por ejemplo, puedes realizar una operación de upsert en múltiples entidades:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

$datastore->upsertBatch($tasks);

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

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

tasks = datastore.save task1, task2
task_key1 = tasks[0].key
task_key2 = tasks[1].key

Puedes lookup múltiples entidades:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

var tasks []*Task
err := client.GetMulti(ctx, taskKeys, &tasks)

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

const keys = [taskKey1, taskKey2];

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

tasks = client.get_multi(keys)

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

task_key1 = datastore.key "Task", "sampleTask1"
task_key2 = datastore.key "Task", "sampleTask2"
tasks = datastore.find_all task_key1, task_key2

Puedes borrar varias entidades:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

err := client.DeleteMulti(ctx, taskKeys)

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

datastore.delete(taskKey1, taskKey2);

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

const keys = [taskKey1, taskKey2];

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

$datastore->deleteBatch($keys);

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

client.delete_multi(keys)

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

task_key1 = datastore.key "Task", "sampleTask1"
task_key2 = datastore.key "Task", "sampleTask2"
datastore.delete task_key1, task_key2

Las operaciones en lotes no cambian tus costos de lectura, escritura o eliminación; documentados en Precios y cuota. Se te cobrará por cada clave en una operación por lotes, aunque la clave no exista.

El tamaño de las entidades involucradas en una operación no afecta a los costos de lectura, escritura o eliminación. Sin embargo, el tamaño de las entidades sí impacta sobre tus costos de tamaño de almacenamiento.

Identificadores y tipos

Cada entidad corresponde a un tipo en particular, que la clasifica con el fin de realizar consultas. Por ejemplo, una aplicación de lista de tareas podría representar cada tarea que se debe completar con una entidad del tipo Task.

Todos los nombres de tipo que comienzan con dos guiones bajos (__) están reservados y no se pueden usar.

Cómo asignar identificadores

Cada entidad, además de un tipo, también posee un identificador, que se le asigna cuando se crea la entidad. Debido a que es parte de la clave de la entidad, el identificador se encuentra asociado de forma permanente a la entidad y no se puede cambiar. Se puede asignar de dos maneras:

  • Tu aplicación puede especificar su propia string de nombre de clave para la entidad.
  • Puedes hacer que Cloud Firestore en modo Datastore asigne un ID numérico entero a la entidad de forma automática.

En el siguiente ejemplo, se crea una clave de tipo Task con el nombre de clave "sampleTask" como identificador:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

key = client.key('Task', 'sample_task')

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

El modo Datastore también puede asignar varios ID de forma automática. El modo Datastore genera una secuencia aleatoria de ID sin usar con una distribución aproximadamente uniforme. Cada ID puede tener hasta 16 dígitos decimales.

En el siguiente ejemplo se crea una clave de tipo Task sin utilizar un nombre de clave. La clave completa (incluso el ID asignado automáticamente) de la entidad se mostrará cuando una entidad con clave incompleta se guarde en el modo Datastore:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

taskKey := datastore.IncompleteKey("Task", nil)

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

key = client.key('Task')

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

task_key = datastore.key "Task"

Si quieres mostrar al usuario los ID de la entidad o depender de su pedido, lo mejor que puedes hacer es utilizar asignación manual.

Asigna tu propio ID numérico

A veces, las aplicaciones avanzadas quieren asignar sus propios ID numéricos de forma manual a las entidades que crean, en lugar de usar strings de nombre de clave o generar ID numéricos de forma automática. Sin embargo, ten en cuenta que nada impide que una base de datos en modo Datastore asigne uno de tus ID numéricos manuales a otra entidad. La única forma de impedir ese conflicto es pedir a tu aplicación que obtenga un bloque de varios ID con el método allocateIds().

El generador automático de ID del modo Datastore llevará un registro de los ID asignados con estos métodos y evitará volver a usarlos para otra entidad; de esta manera, podrás usarlos sin que se generen conflictos. No puedes elegir manualmente qué valores muestra el método allocateIds(). El modo Datastore asigna los valores que muestra allocateIds().

Rutas principales

Las entidades en una base de datos en modo Datastore conforman un espacio con estructura jerárquica, similar a la estructura de directorios de un sistema de archivos. Cuando creas una entidad, tienes la opción de designar otra entidad como principal, en cuyo caso la nueva entidad es secundaria respecto de la entidad principal (ten en cuenta que, a diferencia de lo que ocurre en un sistema de archivos, no es necesario que efectivamente exista una entidad principal). Una entidad sin su superior es una entidad raíz. La asociación entre una entidad secundaria y la entidad superior es permanente, y no puede cambiarse una vez creada la entidad. El modo Datastore nunca asignará el mismo ID numérico a dos entidades asociadas a la misma entidad principal ni a dos entidades raíz (no asociadas a una entidad principal).

La superior de una entidad y la superior de una superior, y así sucesivamente, son sus principales. Sus secundarios y los secundarios de los secundarios, y así sucesivamente, son sus descendientes. La secuencia de entidades que comienza con una entidad raíz y sigue de superior a secundario, hasta llegar a una cierta entidad, constituye la ruta principal de esa entidad. La clave completa que identifica una entidad consta de una secuencia de pares de tipo-identificador que especifican la ruta de principales y terminan con el tipo y el identificador de la propia entidad:

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

Para una entidad raíz, la ruta principal está vacía y la clave consta solo del tipo y del identificador de la entidad:

[User:alice]

Niveles de superiores

Utiliza niveles de superiores para organizar tus datos. Por ejemplo, si tu aplicación organiza entidades Task por entidades TaskList, utiliza un nivel de superior:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

key = client.key('TaskList', 'default', 'Task', 'sample_task')
# Alternatively
parent_key = client.key('TaskList', 'default')
key = client.key('Task', 'sample_task', parent=parent_key)

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Si tu aplicación organiza primero entidades Task por entidades User y luego por entidades TaskList, utiliza varios niveles de superior:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

key = client.key(
    'User', 'alice',
    'TaskList', 'default',
    'Task', 'sample_task')

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Como se muestra en el ejemplo anterior, cuando creas una entidad con una superior, especificas la ruta principal completa de la superior.

Una aplicación que mantiene perfiles de usuario puede requerir solo un nivel de superior para los datos del perfil de usuario. Por ejemplo, utiliza una ruta principal de User de un solo nivel para entidades Profile:

[User:alice, Profile:public]

Una aplicación de planificación de conferencias puede requerir varios niveles de superiores, como una ruta principal Building/Floor de nivel múltiple para entidades Room:

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

Grupos de entidades

Un grupo de entidades consta de una entidad raíz y todos sus descendientes. Las aplicaciones suelen usar grupos de entidades para organizar datos muy relacionados entre sí. Por ejemplo, una aplicación puede utilizar un grupo de entidades para almacenar datos de un producto o un perfil de usuario.

Se garantiza que los valores de ID asignados por el sistema son siempre únicos para el grupo de entidades. Si copias una entidad desde un grupo de entidad o un espacio de nombres a otro y quieres conservar la parte de la clave que contiene el ID, asegúrate de asignar el ID primero a fin de evitar que Datastore seleccione ese ID para una asignación futura.

Propiedades y tipos de valores

Los valores de datos asociados a una entidad constan de una o más propiedades. Cada propiedad tiene un nombre y uno o más valores.

Una propiedad puede tener valores de más de un tipo y dos entidades pueden tener valores de diferente tipo para la misma propiedad. Una propiedad puede o no estar indexada (las consultas que ordenan o filtran en una propiedad p ignorarán las entidades en las que p no esté indexada).

Algunos ejemplos de propiedades son:

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

task = datastore.Entity(
    key,
    exclude_from_indexes=['description'])
task.update({
    'category': 'Personal',
    'description': 'Learn Cloud Datastore',
    'created': datetime.datetime.utcnow(),
    'done': False,
    'priority': 4,
    'percent_complete': 10.5,
})

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

Una propiedad con más de un valor se denomina arreglo de propiedades. Este ejemplo contiene dos arreglos de propiedades. El primero se denomina tags con valores fun y programming. El segundo se denomina collaborators con valores alice y bob.

C#

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para C#.

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

Go

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Go.

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

Java

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Java.

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

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Node.js.

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

PHP

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para PHP.

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

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Python.

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

Ruby

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta las bibliotecas cliente de Cloud Datastore. Si quieres obtener más información, consulta la documentación de referencia de la API de Cloud Datastore para Ruby.

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

En JSON, un arreglo de propiedades se puede asignar con el campo arrayValue que es del tipo ArrayValue y con la configuración del campo values como un arreglo de valores. Para no indexar una propiedad, el campo excludeFromIndexes del objeto de valor de la propiedad se debe establecer como true.

En búferes de protocolo, un arreglo de propiedades se puede asignar con el campo array_value que es del tipo ArrayValue y mediante la propagación del campo values con varios objetos Value. Para no indexar una propiedad, el campo exclude_from_indexes de Value se debe establecer como true.

Las propiedades se almacenan como un mapa string/value que contiene los nombres de propiedad y los valores de la entidad. Se admiten los siguientes tipos para los valores:

Arreglo

  • JSON
    • nombre de campo: arrayValue
    • tipo: un objeto ArrayValue que contiene un arreglo de objetos de valor JSON
  • Búfer de protocolo
    • nombre de campo: array_value
    • tipo: un mensaje ArrayValue que contiene uno o más mensajes Value
  • Orden de clasificación: ninguno
  • Notas: No puede contener otro valor de arreglo. La instancia de valor no debe establecer meaning ni exclude_from_indexes.

Booleano

  • JSON
    • nombre de campo: booleanValue
    • tipo: true o false
  • Búfer de protocolo
    • nombre de campo: boolean_value
    • tipo: bool
  • Orden de clasificación: false<true

BLOB

  • JSON
    • nombre de campo: blobValue
    • tipo: string. Debe tener codificación base64.
  • Búfer de protocolo
    • nombre de campo: blob_value
    • tipo: bytes
  • Orden de clasificación: orden de byte
  • Notas: Hasta 1,500 bytes si la propiedad está indexada, o de lo contrario, hasta 1,048,487 bytes (1 MiB - 89 bytes).

Fecha y hora

  • JSON
    • nombre de campo: timestampValue
    • tipo: string (con formato RFC 3339 con milisegundos, por ejemplo 2013-05-14T00:01:00.234Z)
  • Búfer de protocolo
    • nombre de campo: timestamp_value
    • tipo: Timestamp
  • Orden de clasificación: cronológico
  • Notas:
    • Cuando se almacena en modo Datastore, la precisión máxima es de microsegundos; cualquier precisión adicional se redondea hacia abajo.
    • Cuando se muestra como parte de una consulta de proyección, el modo Datastore convierte los valores de marcas de tiempo en valores de números enteros de microsegundo.

Entidad incorporada

  • JSON
    • nombre de campo: entityValue
    • tipo: una entidad JSON
  • Búfer de protocolo
    • nombre de campo: entity_value
    • tipo: un mensaje Entity
  • Orden de clasificación: ninguno
  • Notas: Cuando esté indexado, puedes hacer consultas en subpropiedades. Si excluyes este valor del índice, también se excluyen todas las subpropiedades del mismo.

Número de coma flotante

  • JSON
    • nombre de campo: doubleValue
    • tipo: número
  • Búfer de protocolo
    • nombre de campo: double_value
    • tipo: double
  • Orden de clasificación: numérico
  • Notas: Precisión doble de 64 bits, IEEE 754.

Punto geográfico

  • JSON
    • nombre de campo: geoPointValue
    • tipo: un par de latitud/longitud JSON
  • Búfer de protocolo
    • nombre de campo: geo_point_value
    • tipo: un mensaje LatLng
  • Orden de clasificación: por latitud y, luego, por longitud

Número entero

  • JSON
    • nombre de campo: integerValue
    • tipo: número o string. Utiliza strings para números enteros que no se pueden representar de forma exacta como números.
  • Búfer de protocolo
    • nombre de campo: integer_value
    • tipo: int64
  • Orden de clasificación: numérico

Clave

  • JSON
    • nombre de campo: keyValue
    • tipo: una clave de modo Datastore en JSON
  • Búfer de protocolo
    • nombre de campo: key_value
    • tipo: un mensaje Key
  • Orden de clasificación: por elementos de ruta de acceso (tipo, identificador, tipo…)

Nulo

  • JSON
    • nombre de campo: nullValue
    • tipo: nulo
  • Búfer de protocolo
    • nombre de campo: null_value
    • tipo: NullValue
  • Orden de clasificación: ninguno

String de texto

  • JSON
    • nombre de campo: stringValue
    • tipo: string
  • Búfer de protocolo
    • nombre de campo: string_value
    • tipo: string
  • Orden de clasificación: orden de byte con codificación UTF-8
  • Notas: Hasta 1,500 bytes si la propiedad está indexada, o de lo contrario, hasta 1,048,487 bytes (1 MiB - 89 bytes).

Orden de los tipos de valor

Cuando una consulta incluye una propiedad con valores de varios tipos, un modo Datastore usa un orden determinista basado en las representaciones internas. La lista siguiente muestra el orden:

  1. valores nulos
  2. Números de coma fija
    • Números enteros
    • Fechas y horarios
  3. Valores booleanos
  4. Strings de bytes
  5. Strings unicode
  6. Números de coma flotante
  7. Puntos geográficos
  8. Claves del modo Datastore
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Datastore