Get

Get( ref, [ts] )
Get( ref, [ts] )
Get( ref, [ts] )
Get( ref, [ts] )
get( ref, [ts] )
Get( ref, [ts] )

Description

The Get function retrieves a single document identified by ref. An optional timestamp (ts) can be provided to retrieve the document which existed at the specific date and time. If the timestamp is omitted the default is the current time.

Get is also useful for retrieving the first document from a Match result.

Errors

  • If the document does not exist, a "document not found" error is returned. Use the exists predicate to avoid "document not found" errors.

  • If the client does not have read permission for the document, a "permission denied" error is returned.

Parameter

Argument Type Definition and Requirements

ref

A document reference that uniquely identifies a document.

ts

Optional - Return the document at the specified point in time (number of UNIX microseconds or Timestamp). The default is the current time.

For large values of ts (positive or negative), you may need to express the value in a string to maintain numeric precision (Fauna uses 64-bit signed integers, whereas JavaScript uses 53-bit signed integers).

Returns

A document containing both the document data and metadata described below.

Field Name Field Type Definition and Requirements

ref

The reference identifies the document retrieved.

data

The document data retrieved at the location pointed to by ref.

ts

The timestamp associated with the creation of the requested document version, according to the ts parameter. Effectively, this timestamp represents the most recent modification of the document as of the ts parameter.

Examples

The following query retrieves an document by providing a reference to the collection named "spells" at a specific id:

client.Query(
    Get(Ref(Collection("spells"), "181388642046968320"))
);
ObjectV(ref: RefV(id = "181388642046968320", collection = RefV(id = "spells", collection = RefV(id = "collections"))),ts: LongV(1603756365810000),data: ObjectV(name: StringV(Fire Beak),element: Arr(StringV(air), StringV(fire)),spellbook: RefV(id = "181388642139243008", collection = RefV(id = "spellbooks", collection = RefV(id = "collections")))))
result, err := client.Query(
	f.Get(f.Ref(f.Collection("spells"), "181388642046968320")))

if err != nil {
	fmt.Fprintln(os.Stderr, err)
} else {
	fmt.Println(result)
}
map[data:map[element:[air fire] name:Fire Beak spellbook:{181388642139243008 0xc000170360 0xc000170360 <nil>}] ref:{181388642046968320 0xc000170180 0xc000170180 <nil>} ts:1603747176520000]
System.out.println(
    client.query(
        Get(Ref(Collection("spells"), Value(181388642046968320L)))
    ).get());
{ref: ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1593465108040000, data: {name: "Fire Beak", element: ["air", "fire"], spellbook: ref(id = "181388642139243008", collection = ref(id = "spellbooks", collection = ref(id = "collections")))}}
client.query(
  q.Get(q.Ref(q.Collection('spells'), '181388642046968320'))
)
.then((ret) => console.log(ret))
.catch((err) => console.error('Error: %s', err))
{
  ref: Ref(Collection("spells"), "181388642046968320"),
  ts: 1592113594660000,
  data: {
    name: 'Fire Beak',
    element: [ 'air', 'fire' ],
    spellbook: Ref(Collection("spellbooks"), "181388642139243008")
  }
}
result = client.query(
  q.get(q.ref(q.collection("spells"), "181388642046968320"))
)
print(result)
{'ref': Ref(id=181388642046968320, collection=Ref(id=spells, collection=Ref(id=collections))), 'ts': 1592959119480000, 'data': {'name': 'Fire Beak', 'element': ['air', 'fire'], 'spellbook': Ref(id=181388642139243008, collection=Ref(id=spellbooks, collection=Ref(id=collections)))}}
client.query(Get(Ref(Collection("spells"), "181388642046968320")))
{ref: ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1594487551660000, data: {name: "Fire Beak", element: ["air", "fire"], spellbook: ref(id = "181388642139243008", collection = ref(id = "spellbooks", collection = ref(id = "collections")))}}

To retrieve multiple references in a single operation, utilize the array operator to group and return multiple documents. The following example returns three different identifiers from the spells collection in a single database operation. This saves network bandwidth and processing by grouping several requests for data into the same operation.

client.Query(
    Arr(
        Get(Ref(Collection("spells"), "181388642046968320")),
        Get(Ref(Collection("spells"), "181388642071085568")),
        Get(Ref(Collection("spells"), "181388642088911360"))
    )
);
Arr(ObjectV(ref: RefV(id = "181388642046968320", collection = RefV(id = "spells", collection = RefV(id = "collections"))),ts: LongV(1603756365810000),data: ObjectV(name: StringV(Fire Beak),element: Arr(StringV(air), StringV(fire)),spellbook: RefV(id = "181388642139243008", collection = RefV(id = "spellbooks", collection = RefV(id = "collections"))))), ObjectV(ref: RefV(id = "181388642071085568", collection = RefV(id = "spells", collection = RefV(id = "collections"))),ts: LongV(1603756365810000),data: ObjectV(name: StringV(Water Dragon's Claw),element: Arr(StringV(water), StringV(fire)),spellbook: RefV(id = "181388642139243008", collection = RefV(id = "spellbooks", collection = RefV(id = "collections"))))), ObjectV(ref: RefV(id = "181388642088911360", collection = RefV(id = "spells", collection = RefV(id = "collections"))),ts: LongV(1603756293930000),data: ObjectV(name: StringV(Hippo's Wallow),element: Arr(StringV(water), StringV(earth)))))
result, err := client.Query(
	f.Arr{
		f.Get(f.Ref(f.Collection("spells"), "181388642046968320")),
		f.Get(f.Ref(f.Collection("spells"), "181388642071085568")),
		f.Get(f.Ref(f.Collection("spells"), "181388642088911360")),
	})

if err != nil {
	fmt.Fprintln(os.Stderr, err)
} else {
	fmt.Println(result)
}
[map[data:map[element:[air fire] name:Fire Beak spellbook:{181388642139243008 0xc000146420 0xc000146420 <nil>}] ref:{181388642046968320 0xc000146240 0xc000146240 <nil>} ts:1603747176520000] map[data:map[element:[water fire] name:Water Dragon's Claw spellbook:{181388642139243008 0xc0001468a0 0xc0001468a0 <nil>}] ref:{181388642071085568 0xc000146600 0xc000146600 <nil>} ts:1603747176520000] map[data:map[element:[water earth] name:Hippo's Wallow] ref:{181388642088911360 0xc000146a80 0xc000146a80 <nil>} ts:1603747162980000]]
System.out.println(
    client.query(
        Arr(
            Get(Ref(Collection("spells"),Value("181388642046968320"))),
            Get(Ref(Collection("spells"),Value("181388642071085568"))),
            Get(Ref(Collection("spells"),Value("181388642088911360")))
        )
    ).get());
[{ref: ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1593465108040000, data: {name: "Fire Beak", element: ["air", "fire"], spellbook: ref(id = "181388642139243008", collection = ref(id = "spellbooks", collection = ref(id = "collections")))}}, {ref: ref(id = "181388642071085568", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1593465108040000, data: {name: "Water Dragon's Claw", element: ["water", "fire"], spellbook: ref(id = "181388642139243008", collection = ref(id = "spellbooks", collection = ref(id = "collections")))}}, {ref: ref(id = "181388642088911360", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1593464839880000, data: {name: "Hippo's Wallow", element: ["water", "earth"]}}]
client.query([
  q.Get(q.Ref(q.Collection('spells'), '181388642046968320')),
  q.Get(q.Ref(q.Collection('spells'), '181388642071085568')),
  q.Get(q.Ref(q.Collection('spells'), '181388642088911360')),
])
.then((ret) => console.log(util.inspect(ret, { depth: null })))
.catch((err) => console.error('Error: %s', err))
[
  {
    ref: Ref(Collection("spells"), "181388642046968320"),
    ts: 1592270304740000,
    data: {
      name: 'Fire Beak',
      element: [ 'air', 'fire' ],
      spellbook: Ref(Collection("spellbooks"), "181388642139243008")
    }
  },
  {
    ref: Ref(Collection("spells"), "181388642071085568"),
    ts: 1592270304740000,
    data: {
      name: "Water Dragon's Claw",
      element: [ 'water', 'fire' ],
      spellbook: Ref(Collection("spellbooks"), "181388642139243008")
    }
  },
  {
    ref: Ref(Collection("spells"), "181388642088911360"),
    ts: 1592270304740000,
    data: { name: "Hippo's Wallow", element: [ 'water', 'earth' ] }
  }
]
result = client.query(
  [
    q.get(q.ref(q.collection("spells"), "181388642046968320")),
    q.get(q.ref(q.collection("spells"), "181388642071085568")),
    q.get(q.ref(q.collection("spells"), "181388642088911360"))
  ]
)
print(result)
[{'ref': Ref(id=181388642046968320, collection=Ref(id=spells, collection=Ref(id=collections))), 'ts': 1592959519240000, 'data': {'name': 'Fire Beak', 'element': ['air', 'fire'], 'spellbook': Ref(id=181388642139243008, collection=Ref(id=spellbooks, collection=Ref(id=collections)))}}, {'ref': Ref(id=181388642071085568, collection=Ref(id=spells, collection=Ref(id=collections))), 'ts': 1592959519240000, 'data': {'name': "Water Dragon's Claw", 'element': ['water', 'fire'], 'spellbook': Ref(id=181388642139243008, collection=Ref(id=spellbooks, collection=Ref(id=collections)))}}, {'ref': Ref(id=181388642088911360, collection=Ref(id=spells, collection=Ref(id=collections))), 'ts': 1592959517110000, 'data': {'name': "Hippo's Wallow", 'element': ['water', 'earth']}}]
client.query(
  Arr(
    Get(Ref(Collection("spells"), "181388642046968320")),
    Get(Ref(Collection("spells"), "181388642071085568")),
    Get(Ref(Collection("spells"), "181388642088911360"))
  ))
[{ref: ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1594487551660000, data: {name: "Fire Beak", element: ["air", "fire"], spellbook: ref(id = "181388642139243008", collection = ref(id = "spellbooks", collection = ref(id = "collections")))}}, {ref: ref(id = "181388642071085568", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1594487551660000, data: {name: "Water Dragon's Claw", element: ["water", "fire"], spellbook: ref(id = "181388642139243008", collection = ref(id = "spellbooks", collection = ref(id = "collections")))}}, {ref: ref(id = "181388642088911360", collection = ref(id = "spells", collection = ref(id = "collections"))), ts: 1594487123040000, data: {name: "Hippo's Wallow", element: ["water", "earth"]}}]

Was this article helpful?

We're sorry to hear that.
Tell us how we can improve!
Visit Fauna's Discourse forums or email docs@fauna.com

Thank you for your feedback!