如何解决在 Fauna db 中过滤嵌套的文档树?
我在 Fauna 中有以下单个文档的数据结构:
"data": {
"title": "Title1","blocks": [
{
"block_1": {
"text": "Text1","refs": Ref(Collection("xyz"),"XYZ")
},{
"block_2": {
"text": "Text2","XYZ2")
}
]
}
说文档是给定的。 FQL 中有没有办法根据“引用”值获取“块”?例如。仅根据“refs”=XYZ 返回“block_1”。 IE。上面的例子应该只返回“block_1”。
我希望问题很清楚。随时要求澄清。 :slight_smile:
感谢您的帮助。
解决方法
Let({
blocks: Select(["data","blocks"],Get(Ref(Collection("Blocks"),"299664869783765505"))),entitiesArray: Map(Var("blocks"),block => ToArray(block)),entities: Reduce((acc,value) => Append(acc,value),[],Var("entitiesArray")),find: Filter(Var("entities"),entity => Equals(Select([1,"refs"],entity),Ref(Collection("xyz"),"1")))
},ToObject(Var("find"))
)
但我建议修改 blocks
结构。尝试将其保留为数组
"blocks": [
{"text": "Text1","refs": Ref(Collection("xyz"),1) },{"text": "Text2",2) }
]
FQL 应该是
Let({
blocks: Select(["data",find: Filter(Var("blocks"),entity => Equals(Select(["refs"],Var("find")
)
或者一个对象
"blocks": {
"block_1": {
"text": "Text1",1)
},"block_2": {
"text": "Text2",2)
}
}
FQL
Let({
blocks: Select(["data",entities: ToArray(Var("blocks")),ToObject(Var("find"))
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。