在Firebase Firestore中,子集合是存储在文档内的集合。要在Firestore中筛选包含特定子集合的集合,你需要先获取父集合中的文档,然后对这些文档进行进一步处理以筛选出包含特定子集合的文档。
以下是一个示例,展示如何在Firebase Firestore中使用子集合来筛选集合:
假设你有一个名为 users
的集合,每个用户文档中都有一个名为 orders
的子集合。你想要筛选出那些在 orders
子集合中包含特定订单的用户。
首先,确保你已经初始化了Firebase,并且已经配置了Firestore。
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: 'https://<your-database-name>.firebaseio.com'
});
const db = admin.firestore();
你需要先获取 users
集合中的所有文档。
async function getUsersWithSpecificOrder(orderId) {
const usersRef = db.collection('users');
const usersSnapshot = await usersRef.get();
const usersWithOrder = [];
for (const userDoc of usersSnapshot.docs) {
const ordersRef = userDoc.ref.collection('orders');
const ordersSnapshot = await ordersRef.where('orderId', '==', orderId).get();
if (!ordersSnapshot.empty) {
usersWithOrder.push(userDoc.data());
}
}
return usersWithOrder;
}
getUsersWithSpecificOrder('specific-order-id')
.then(users => {
console.log('Users with specific order:', users);
})
.catch(error => {
console.error('Error getting users:', error);
});
users
集合中的所有文档:db.collection('users').get()
获取 users
集合中的所有文档。for...of
循环遍历每个用户文档。orders
子集合:userDoc.ref.collection('orders')
获取每个用户文档中的 orders
子集合。ordersRef.where('orderId', '==', orderId).get()
筛选出包含特定订单的子集合。ordersSnapshot
不为空,则将用户文档的数据添加到 usersWithOrder
数组中。orderId
)创建了索引,以提高查询性能。领取专属 10元无门槛券
手把手带您无忧上云