Облако Firestore, как найти все документы с вложенной коллекцией, содержащей конкретный идентификатор документа? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь реализовать способ поддержания согласованности в Firestore, но мне нужен способ найти все позиции, где существуют дублирующие данные.Есть ли способ в пожарном магазине найти все документы, чья подколлекция содержит документы с определенным идентификатором документа?Например, для следующей структуры

Users(collections){
    1234(document){
        Name: 
        Friends(collection){
            5678(document) {
                Name: 
            }
            9012(document) {
                Name:
            }
    }
    5678(document){
        Name:
    }
}

Какой запрос я бы использовал, чтобы найти все идентификаторы пользователей, список друзей которых содержит документ с идентификатором документа 5678?Например, когда пользователь 5678 решил изменить свое имя?

1 Ответ

1 голос
/ 27 сентября 2019

Не совсем.Еще в мае были введены запросы групповых коллекций, которые позволяют вам искать во всех коллекциях с одинаковым именем, но это ограничение не сработает для вашего варианта использования, поскольку ваши пользователи хранятся в Users, а их друзья - в Friends.

Если бы Друзья были переименованы, чтобы соответствовать пользователям, и id также были сохранены в документе, это было бы возможно с этим типом запроса:

let friends = db.collectionGroup('users').where('id', '==', id);
friends.get().then(function(querySnapshot) {
  querySnapshot.forEach(function(doc) {
    console.log(doc.id, ' => ', doc.data());
  });
});

https://firebase.google.com/docs/firestore/query-data/queries#collection-group-query

...