Stay organized with collectionsSave 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 accountto 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 arenotthe project owner, your account requires the
following permissions to complete this quickstart:
Your account requires theDatastore Ownerrolewhich contains thedatastore.databases.createpermission
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 theappengine.applications.createpermission. The project owner
can assign this permission with anIAM 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 theFirestore 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,
seeDatastore mode locations.
The location applies to both Datastore mode databases and App Engine apps for
your Google Cloud project.
ClickCreate 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.
ClickCreate entity.
On theCreate an entitypage, use[default]forNamespace.
TypeTaskin theKindfield. LeaveKey identifierset to the
default value ofNumeric ID (auto-generated).
UnderProperties, use theAdd propertybutton 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:
ClickCreate. The console displays theTaskentity 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
ClickQuery by kind.
SelectTaskas the kind.
The query results show theTaskentity that you created.
Next, add a query clause to restrict the results to entities that meet specific
criteria:
ClickAdd query clause.
In the dropdown lists, selectWHERE,done,==,boolean, andfalse.
ClickRun. The results show theTaskentity that you
created since itsdonevalue isfalse.
Now change the query clause toWHERE,done,==,boolean, andtrue. ClickRun. The results do not include theTaskentity that you
created, because itsdonevalue is nottrue.
Run GQL queries
ClickQuery by GQL.
EnterSELECT * FROM Taskas the query. Note thatTaskis case sensitive.
ClickRun query.
The query results show theTaskentity that you created.
Add a query filter to restrict the results to entities that meet
specific criteria:
Run a query such asSELECT * FROM Task WHERE done=false. Note thatTaskanddoneare case sensitive.
The results show theTaskentity that you created, since itsdonevalue isfalse.
Now run a query such asSELECT * FROM Task WHERE done=true. The results do
not include theTaskentity that you created, because itsdonevalue is
nottrue.
Clean up
ClickQuery by kindand ensureTaskis the selected kind.
ClickClearto remove any query clauses.
Select theTaskentity that you created.
ClickDelete, and then confirm you want to delete theTaskentity.
Depending on the size of the browser window,Deletemight be under themore_vertMore actionsmenu. 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-09-02 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"]]