有幾種方法可以解決這個問題,並且您在評論中提到了一個。
1)查詢group = users的所有用戶。遍歷每個和每一個到組更新組=主持人
2)添加一些結構
users
uid_0
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing",
"group": "-UY89j99j9jasd",
"nickname": "Alan The Machine"
uid_1
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing",
"group": "-Y888jasjdjaos",
"nickname": "Alan The Machine"
uid_2
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing",
"group": "-UY89j99j9jasd",
"nickname": "Alan The Machine"
和組
-UY89j99j9jasd
group_name: "users"
-Y888jasjdjaos
group_name: "dudes"
然後把所有的誰是「用戶的當前用戶'轉換爲版主,將group_name更改爲'版主'。這也很好,因爲如果你決定不喜歡「版主」這個詞,而是想給他們打電話,那麼你可以用一個變化來做到這一點。
-UY89j99j9jasd
group_name: "moderators" //or 'people who pwn'
-Y888jasjdjaos
group_name: "dudes"
3)翻轉你的邏輯並將用戶存儲在主持人或用戶節點中。
users
uid_0
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing",
"nickname": "Alan The Machine"
uid_1
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing",
"nickname": "Alan The Machine"
uid_2
"date_of_birth": "June 23, 1912",
"full_name": "Alan Turing",
"nickname": "Alan The Machine"
和組
-U8asdjoasjds
group_name: "moderators"
members:
uid_0: true
uid_2: true
-Yuiis9isisis
group_name: "users"
members
uid_1: true
現在你可以很容易地得到所有孩子的用戶/成員組,並將它們添加到管理員組,並且您還可以更改組的名稱爲好。
4)不推薦這種
administrators
uid_0: true
uid_2: true
users
uid_1: true
這類似於#3,但關鍵的識別組型。與3相同,獲得用戶的子女並將其寫入管理員。通常情況下,最好的做法是將鍵名與它們包含的數據分離,但在這種情況下可能沒問題。
當然,我可以讓所有用戶通過對象組X循環遍歷對象,並將所有組X都更改爲Y組,然後通過更新將整個數據寫回,但我懷疑這是數據庫的最佳方法成千上萬的用戶。我正在尋找的基本上是我會在MySQL中做什麼(update WHERE group = x) – Oliver