O Firestore no modo Datastore (Datastore) é compatível com vários tipos de dados para valores de propriedade. Estes são alguns deles:
- Números inteiros
- Números de ponto flutuante
- Strings
- Datas
- dados binários
Para uma lista completa de tipos, consulte Propriedades e tipos de valor.
Propriedades e tipos de valores
Os valores de dados associados a uma entidade consistem em uma ou mais propriedades. Cada propriedade tem um nome e um ou mais valores. Uma propriedade pode ter valores de mais de um tipo, e duas entidades podem ter valores de tipos diferentes para a mesma propriedade. As propriedades podem ser indexadas ou não (consultas que ordenam ou filtram com base em uma propriedade P ignoram entidades em que P não seja indexada). Uma entidade pode ter no máximo 20.000 propriedades indexadas.
Estes são os tipos de valor compatíveis:
| Tipo de valor | Tipo(s) do Go | Ordem de classificação | Observações |
|---|---|---|---|
| Número inteiro | intint8int16int32int64 |
Numérico | Número inteiro de 64 bits, assinado |
| Número de ponto flutuante | float32float64 |
Numérico | Precisão dupla de 64 bits, IEEE 754 |
| Booleano | bool |
false<true |
|
| String (curta) | string |
Unicode |
Até 1500 bytes |
| String (longa) | string (com noindex) |
Nenhum | Até 1 megabyte Não indexado |
| Fatia de bytes (curta) | datastore.ByteString |
Ordem de bytes | Até 1500 bytes |
| Fatia de bytes (longa) | []byte |
Nenhum | Até 1 megabyte Não indexado |
| Data e hora | time.Time |
Cronológica | |
| Ponto geográfico | appengine.GeoPoint |
Por latitude, e depois longitude |
|
| Chave do Datastore | *datastore.Key |
Por elementos do caminho (tipo, identificador, tipo, identificador...) |
|
| Chave Blobstore | appengine.BlobKey |
Ordem de bytes |
Você também pode usar um struct ou slice para agregar propriedades. Consulte a referência do Datastore para mais detalhes.
Quando uma consulta envolve um campo com valores de tipos mistos, o Firestore usa uma ordem determinista com base nas representações internas:
- Valores nulos
- Números de ponto fixo
- Números inteiros
- datas e horas
- Valores booleanos
- Sequências de bytes
- fatias de bytes (curtas)
- string Unicode
- Chaves do Blobstore
- Números de ponto flutuante
- pontos geográficos
- Chaves do armazenamento de dados
Como as fatias de bytes e as strings longas não são indexadas, elas não têm ordem definida.