MongoDB
Supported data types
What each .NET type is stored as in MongoDB, and what each MongoDB type reads back as.
Writing: .NET to the database
The values Create and Update accept, and what each column stores.
| .NET value | Stored as |
|---|---|
string, char |
string |
a plain enum |
refused (ARX1007): write (int)value or value.ToString(), or use a selection set |
int, short, byte |
32-bit integer |
long, uint |
64-bit integer |
decimal |
Decimal128 (exact) |
double, float |
double (NaN and infinity allowed) |
bool |
boolean |
Guid |
binary subtype 4 (UUID) |
byte[], ArxBytea |
binary |
ArxJsonB |
an embedded document or array (its JSON parsed) |
| an array or a list | an array of the values above |
ArxSelectionSetValue |
its code, or an array of codes |
ArxEntityReference |
the referenced id, as the referenced collection stores it (an ObjectId for a generated string id) |
null |
null |
Dates and times
| .NET value | Stored as |
|---|---|
DateTime (UTC) |
a BSON date, to the millisecond: finer ticks are dropped |
DateTime (Local) |
converted to UTC |
DateTime (Unspecified) |
taken as UTC |
DateTimeOffset |
its UTC instant (the offset isn't kept) |
DateOnly |
midnight UTC of that day |
TimeOnly, TimeSpan |
text (09:30:00.0000000, 1.02:03:04) |
default(DateTime), default(DateTimeOffset), default(DateOnly) |
refused (ARX1013): they mean "not set" |
Reading: the database to .NET
What Retrieve and RetrieveMultiple give back for each column.
| Stored as | Read back as |
|---|---|
| string | string |
| 32-bit integer | int |
| 64-bit integer | long |
| double | double |
| Decimal128 | decimal (ARX4001 past .NET's range) |
| boolean | bool |
| date | DateTime, UTC (a DateOnly is stored as midnight UTC: read it with GetAttributeValue<DateOnly>, which converts a midnight DateTime from 0.1.0-preview.5, or preload the field) |
| ObjectId | string (24 hexadecimal characters) |
| binary subtype 4 | Guid |
| other binary | byte[] |
| embedded document | ArxJsonB |
| array of one kind of value | a typed array (string[], int[], …); any other array as ArxJsonB |
| a declared lookup | ArxEntityReference |
| a preloaded field | the preloaded type (DateOnly from a date, TimeOnly from text, …) |