Если я правильно понимаю, вам нужно использовать запрос группы сбора , как указано ниже:
var likeDislikeSuperQuery = db.collectionGroup('likeDislikeSuper').where('value', '==', 'n');
likeDislikeSuperQuery.get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
console.log(doc.id, ' => ', doc.data());
});
});
Запрос вернет все документы в подколлекциях likeDislikeSuper
( всех кандидатов ) с полем value
, равным 'n'.
Обновите после вашего комментария:
Если вы хотите чтобы получить все документы candidates
, которые являются родительскими для документов likeDislikeSuper
, возвращаемых этим запросом, вы могли бы сделать следующее:
var likeDislikeSuperQuery = db.collectionGroup('likeDislikeSuper').where('value', '==', 'n');
likeDislikeSuperQuery.get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
const parentCandidateRef = doc.ref.parent.parent;
console.log('parentCandidate path: ', doc.ref.parent.parent.path);
});
});
Однако это не самый эффективный подход, поскольку несколько likeDislikeSuper
документы могут иметь одного и того же родительского candidates
документа.
Вы можете дублировать свои данные и, например, иметь основную коллекцию likeDislike
документов для каждого идентификатора лайкера / дислайкера, которая содержит массив candidateId
s (или подколлекцию candidates
документа если вы считаете, что массив может быть настолько большим, что документ достигнет предела размера 1 МБ ).