Stay organized with collections
Save and categorize content based on your preferences.
Store and query data in Firestore in Datastore mode
This page shows you how to store and query data in Firestore in Datastore mode using the Google Cloud console.
Before you begin
Sign in to your Google Cloud account. If you're new to
Google Cloud,
create an account to evaluate how our products perform in
real-world scenarios. New customers also get $300 in free credits to
run, test, and deploy workloads.
In the Google Cloud console, on the project selector page,
select or create a Google Cloud project.
If you are not the project owner, your account requires the
following permissions to complete this quickstart:
Your account requires the
Datastore Owner role
which contains the datastore.databases.create permission
needed to create a Datastore mode instance.
Datastore mode requires an active App Engine application.
If the project doesn't have an application, this quickstart creates one
for you. In that case, you require the
appengine.applications.create permission. The project owner
can assign this permission with an
IAM custom role.
Create a database
To create a new database instance, open the Datastore section
in the Google Cloud console: Go to the Datastore page
Select a database mode.
When you create a new Firestore database, you have the option to use
Firestore in either Native Mode or Datastore mode. You can't use both
modes in the same project.
Select from one of the database options:
Firestore in Native Mode
Recommended for mobile and web apps. To get started with Firestore, continue in the Firestore Quickstart.
Firestore in Datastore Mode
Recommended for app architectures with backend servers.
Select a database location. Datastore mode supports multi-region
and regional locations.
A multi-region location maximizes availability and durability. Regional
locations offer lower write latency. To learn more about location types,
see Datastore mode locations.
The location applies to both Datastore mode databases and App Engine apps for
your Google Cloud project.
Click Create database. After your database finishes initializing, the
Google Cloud console directs you to the Datastore Entities page.
Store data
Go to the Datastore Entities page in the Google Cloud console.
This page lets you store, query, update, and delete data.
Click Create entity.
On the Create an entity page, use [default] for Namespace.
Type Task in the Kind field. Leave Key identifier set to the
default value of Numeric ID (auto-generated).
Under Properties, use the Add property button to add these properties:
Name
Type
Value
Indexed
description
String
Learn about Datastore.
created
Date and time
(today's date)
✓
done
Boolean
False
✓
Your creation page should now look like this:
Click Create. The console displays the Task entity that you just created.
You just stored data in your database!
Run a query
Datastore mode databases support querying data by kind or by
Google Query Language (GQL). The instructions below walk you through using both
to query your database.
Run kind queries
Click Query by kind.
Select Task as the kind.
The query results show the Task entity that you created.
Next, add a query clause to restrict the results to entities that meet specific
criteria:
Click Add query clause.
In the dropdown lists, select WHERE, done, ==, boolean, and
false.
Click Run. The results show the Task entity that you
created since its done value is false.
Now change the query clause to WHERE, done, ==, boolean, and
true. Click Run. The results do not include the Task entity that you
created, because its done value is not true.
Run GQL queries
Click Query by GQL.
Enter SELECT * FROM Task as the query. Note that Task is case sensitive.
Click Run query.
The query results show the Task entity that you created.
Add a query filter to restrict the results to entities that meet
specific criteria:
Run a query such as SELECT * FROM Task WHERE done=false. Note that Task
and done are case sensitive.
The results show the Task entity that you created, since its done value is false.
Now run a query such as SELECT * FROM Task WHERE done=true. The results do
not include the Task entity that you created, because its done value is
not true.
Clean up
Click Query by kind and ensure Task is the selected kind.
Click Clear to remove any query clauses.
Select the Task entity that you created.
Click Delete, and then confirm you want to delete the Task entity.
Depending on the size of the browser window, Delete might be under the
more_vertMore actions menu. Once
deleted, the entity is permanently removed from your database.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[[["\u003cp\u003eThis guide demonstrates how to use the Google Cloud console to store and query data in Firestore's Datastore mode.\u003c/p\u003e\n"],["\u003cp\u003eCreating a Datastore mode instance requires the Datastore Owner role and an active App Engine application, or the \u003ccode\u003eappengine.applications.create\u003c/code\u003e permission.\u003c/p\u003e\n"],["\u003cp\u003eDatastore mode offers multi-region or regional locations, and once set, the database location cannot be changed.\u003c/p\u003e\n"],["\u003cp\u003eData can be stored as entities with properties (name, type, value), and the guide uses a \u003ccode\u003eTask\u003c/code\u003e entity example.\u003c/p\u003e\n"],["\u003cp\u003eData in Datastore can be queried by kind or using Google Query Language (GQL), with support for filtering results based on specific criteria.\u003c/p\u003e\n"]]],[],null,["# Quickstart: Store and query data in Firestore in Datastore mode\n\nStore and query data in Firestore in Datastore mode\n===================================================\n\nThis page shows you how to store and query data in Firestore in Datastore mode using the Google Cloud console.\n\nBefore you begin\n----------------\n\n- Sign in to your Google Cloud account. If you're new to Google Cloud, [create an account](https://console.cloud.google.com/freetrial) to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.\n- In the Google Cloud console, on the project selector page,\n select or create a Google Cloud project.\n\n | **Note**: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.\n\n [Go to project selector](https://console.cloud.google.com/projectselector2/home/dashboard)\n\n- In the Google Cloud console, on the project selector page,\n select or create a Google Cloud project.\n\n | **Note**: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.\n\n [Go to project selector](https://console.cloud.google.com/projectselector2/home/dashboard)\n-\n\n If you are **not** the project owner, your account requires the\n following permissions to complete this quickstart:\n\n\n - Your account requires the [**Datastore Owner** role](/iam/docs/understanding-roles#cloud_datastore_roles) which contains the `datastore.databases.create` permission needed to create a Datastore mode instance.\n - Datastore mode requires an active App Engine application. If the project doesn't have an application, this quickstart creates one for you. In that case, you require the `appengine.applications.create` permission. The project owner can assign this permission with an [IAM custom role](/iam/docs/creating-custom-roles).\n\nCreate a database\n-----------------\n\n1. To create a new database instance, open the Datastore section\n in the Google Cloud console: \n\n [Go to the Datastore page](https://console.cloud.google.com/datastore/welcome)\n\n2. Select a database mode.\n\n When you create a new Firestore database, you have the option to use\n Firestore in either Native Mode or Datastore mode. You can't use both\n modes in the same project.\n\n Select from one of the database options:\n - **Firestore in Native Mode**\n\n Recommended for mobile and web apps. To get started with Firestore, continue in the [Firestore Quickstart](/firestore/docs/quickstart).\n - **Firestore in Datastore Mode**\n\n Recommended for app architectures with backend servers.\n\n For more guidance on selecting a database mode and for a feature-by-feature\n comparison, see\n [choosing between Native Mode and Datastore Mode](/datastore/docs/firestore-or-datastore).\n3. Select a database location. Datastore mode supports multi-region\n and regional locations.\n\n A multi-region location maximizes availability and durability. Regional\n locations offer lower write latency. To learn more about location types,\n see [Datastore mode locations](/datastore/docs/locations).\n The location applies to both Datastore mode databases and App Engine apps for\n your Google Cloud project.\n | **Warning:** Once you create your database, you cannot change the location.\n\n Click **Create database**. After your database finishes initializing, the\n Google Cloud console directs you to the Datastore Entities page.\n\nStore data\n----------\n\n1. Go to the Datastore Entities page in the Google Cloud console.\n\n [Go to the Entities page](https://console.cloud.google.com/datastore/entities/query)\n\n This page lets you store, query, update, and delete data.\n2. Click **Create entity**.\n\n3. On the **Create an entity** page, use `[default]` for **Namespace**.\n\n4. Type `Task` in the **Kind** field. Leave **Key identifier** set to the\n default value of `Numeric ID (auto-generated)`.\n\n5. Under **Properties** , use the **Add property** button to add these properties:\n\n Your creation page should now look like this:\n\n \u003cbr /\u003e\n\n6. Click **Create** . The console displays the `Task` entity that you just created.\n\nYou just stored data in your database!\n\nRun a query\n-----------\n\nDatastore mode databases support querying data by kind or by\nGoogle Query Language (GQL). The instructions below walk you through using both\nto query your database.\n\n### Run kind queries\n\n1. Click **Query by kind**.\n2. Select `Task` as the kind.\n\nThe query results show the `Task` entity that you created.\n\nNext, add a query clause to restrict the results to entities that meet specific\ncriteria:\n\n1. Click **Add query clause**.\n2. In the dropdown lists, select `WHERE`, `done`, `==`, **boolean** , and **false**.\n3. Click **Run** . The results show the `Task` entity that you created since its `done` value is `false`.\n4. Now change the query clause to `WHERE`, `done`, `==`, **boolean** , and **true** . Click **Run** . The results do not include the `Task` entity that you created, because its `done` value is not `true`.\n\n### Run GQL queries\n\n1. Click **Query by GQL**.\n2. Enter `SELECT * FROM Task` as the query. Note that `Task` is case sensitive.\n3. Click **Run query**.\n\nThe query results show the `Task` entity that you created.\n| **Tip**\n|\n| The GQL query editor supports autocompletion for kinds: When you\n| need to type a kind name, press Ctrl+Space to see a list of the available\n| kinds. Up to 300 alphabetically sorted kinds can appear in the list. For\n| better matches of kinds, type one or more characters.\n\nAdd a query filter to restrict the results to entities that meet\nspecific criteria:\n\n1. Run a query such as `SELECT * FROM Task WHERE done=false`. Note that `Task` and `done` are case sensitive. The results show the `Task` entity that you created, since its `done` value is `false`.\n2. Now run a query such as `SELECT * FROM Task WHERE done=true`. The results do not include the `Task` entity that you created, because its `done` value is not `true`.\n\nClean up\n--------\n\n1. Click **Query by kind** and ensure `Task` is the selected kind.\n2. Click **Clear** to remove any query clauses.\n3. Select the `Task` entity that you created.\n4. Click **Delete** , and then confirm you want to delete the `Task` entity. Depending on the size of the browser window, **Delete** might be under the more_vert **More actions** menu. Once deleted, the entity is permanently removed from your database.\n\nThat's it, you completed this quickstart!\n\nWhat's next\n-----------\n\n- Learn more about [Datastore Queries](/datastore/docs/concepts/queries).\n- Learn more about [Datastore mode](/datastore/docs) databases.\n\n\u003cbr /\u003e"]]