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 | int int8 int16 int32 int64 |
Numérico | Número inteiro de 64 bits, assinado |
Número de ponto flutuante | float32 float64 |
Numérico | Precisão dupla de 64 bits, IEEE 754 |
Booleanos | 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.