|
Example of a new shard filter with dotted fields
[2] filter {
|
let [
|
l1.0 =
|
let [
|
l2.0 = (getField(s7, "x") ?: null)
|
]
|
in
|
if isArray(l2.0)
|
then l2.0
|
else (getField(l2.0, "x") ?: null)
|
]
|
in shardFilter(s6,
|
if isArray(l1.0)
|
then Nothing
|
else makeBsonObj(MakeObjSpec(drop, [], ["x.x"]), Nothing, l1.0)
|
)
|
}
|
[1] scan s7 s8 none none none none [] @"3c709eda-5bf9-4718-b500-a2ff6b8c9414" true false
|
|
|
Example of shard filter, generated by current master
[2] filter {shardFilter(s6, s12)}
|
[2] project [s12 =
|
if (!(exists(s9)) || !(exists(s10)))
|
then Nothing
|
else s11
|
]
|
[2] mkbson s11 [_id = s9, i = s10] true false
|
[2] project [s9 =
|
let [
|
l1.0 = (getField(s7, "_id") ?: null)
|
]
|
in
|
if isArray(l1.0)
|
then Nothing
|
else l1.0
|
, s10 =
|
let [
|
l2.0 = (getField(s7, "i") ?: null)
|
]
|
in
|
if isArray(l2.0)
|
then Nothing
|
else l2.0
|
]
|
[1] scan s7 s8 none none none none [] @"6e230ff9-a281-4224-83d5-987e58a65521" true false
|
Same shard filter from my branch
[2] filter {
|
let [
|
l1.0 = (getField(s7, "_id") ?: null)
|
l1.1 = (getField(s7, "i") ?: null)
|
]
|
in shardFilter(s6,
|
if (isArray(l1.0) || isArray(l1.1))
|
then Nothing
|
else makeBsonObj(MakeObjSpec(drop, [], ["_id", "i"]), Nothing, l1.0, l1.1)
|
)
|
}
|
[1] scan s7 s8 none none none none [] @"d5b11fec-b7ce-4af3-a7c4-c68a673d321a" true false
|
|