【发布时间】:2019-09-16 13:39:40
【问题描述】:
我有一个这样的 Firestore 数据库结构:
Songs:
- song1
- artistName
- songCover
- song2
- song3
我希望能够抓取所有收藏过特定歌曲的用户
过去我做了如下结构
FavoriteSongs
- IDSong1
- userID1 (with favorited the song)
- artistName
- songCover
- userID2
Songs:
- song1
- artistName
- songCover
在之前的结构中,我在用户的 id 节点中制作了每首歌曲的精确副本。但是,当一首歌曲更改其封面时,这会迫使我更改 FavoritedSongs 中的每个文档,其中更改的歌曲的 ID 与 FavoriteSongs 的 IDSong 键匹配。
阅读有关集合组查询的信息,我想我可以这样做:
Songs:
- song1
- artistName
- songCover
-> Favorited (Subcollection):
- userID1
- song2
- song3
这样我可以检索特定用户收藏的所有歌曲,并且可以获取包含所有更新值的歌曲,因为更改歌曲的封面只会影响一个文档。
这可能吗,如果可以,我该如何编写查询?
【问题讨论】:
-
请检查副本。这与您所说的完全相同的“问题”。
-
@AlexMamo 这个问题询问如何在给定现有数据库结构的情况下编写集合组查询。我看不出它是重复的。
-
@DougStevenson 哦,是的,你是对的。我错过了那条线。感谢您重新提出问题。
-
@AlexMamo 我不明白所提供的答案,因为我在查询
firestore.collectionGroup("favorited").where("favorited", "==", true)中的确切位置指定了我想要获取他们喜爱的歌曲的用户。另外,这个查询是返回Song文档还是Favorited集合中的文档? -
@Andrea 我认为你应该问问 Doug。很抱歉早些时候结束了这个问题。我错过了集合组查询的那部分。
标签: firebase google-cloud-firestore