我正在尝试查询我的Firestore数据库,以查找集合中所有在数组字段中包含特定对象的文档。可以这么说,我的数据库有这样的文章集合:
articles:
[
{
id: "1",
title: "First Article",
comments:[]
relatedArticles:[
{
id: "2",
title:"Second Article"
},
{
id: "3",
title:"Third Article"
},
]
},
{
id: "2",
title: "Second Article",
comments:[]
relatedArticles:[
{
id: "1",
title:"First Article"
}
]
}
{
id: "3",
title: "Third Article",
comments:[]
relatedArticles:[
{
id: "1",
title:"First Article"
}
]
}
]
articles集合中的每个文章都有一个数组字段(relatedArticles),该字段包含一组对象,每个对象都包含相关文章的id和标题。假设我想在数据库中查询在相关文章字段中包含文章1的所有文章。如果无法修改此结构,我将如何处理。我已经尝试了以下方法,但无济于事:
firestore().collection("articles")
.where("relatedArticles", "array-contains", {title: "First Article", id: "1"})
这可行吗?如果不是,那是什么?
答案 0 :(得分:0)
进行包含数组的搜索时,您只能匹配数组中对象的整个元素。您无法像现在尝试的那样在数组中选择对象的更深字段。
如果要满足此查询,您将在文档中需要其他可搜索的字段。也许一组 only 相关文档ID会为您服务。为了满足查询,通常在NoSQL数据库中复制数据。