Hi Thang,
Yes, this is supported in Fauna. For example, suppose we have the following records for a manager and an employee:
{
ref: Ref(Collection("employees"), "304014359787471426"),
ts: 1626189599380000,
data: {
name: "Alice Doe",
title: "manager",
reports: [Ref(Collection("employees"), "304014403131408962")]
}
}
{
ref: Ref(Collection("employees"), "304014403131408962"),
ts: 1626189678070000,
data: {
name: "Bob Doe",
title: "worker",
user: {
manager: Ref(Collection("employees"), "304014359787471426")
}
}
}
And this index for looking up the manager:
{
ref: Index("employee_by_manager"),
ts: 1626189798520000,
active: true,
serialized: true,
name: "employee_by_manager",
unique: false,
source: Collection("employees"),
terms: [
{
field: ["data", "user", "manager"]
}
],
values: [
{
field: ["data", "name"]
}
],
partitions: 1
}
Then running the index gives us:
Paginate(Match(Index("employee_by_manager"), Ref(Collection("employees"),"304014359787471426")))
{
data: ["Bob Doe"]
}
Cory