GCP Firestore Datastore模式是否支持OR查询?如何查询Jacob的所有关系
问题解答
核心结论
Firestore Datastore模式支持OR查询,你完全可以通过单次查询获取Jacob的所有关系,不需要分两次分别查询user1_id和user2_id。
具体实现(Node.js客户端库)
使用@google-cloud/datastore库的CompositeFilter构建OR逻辑查询,示例代码如下:
const { Datastore, CompositeFilter, Filter } = require('@google-cloud/datastore'); const datastore = new Datastore(); async function getJacobRelations() { const jacobUserId = 2; const kind = 'relations'; // 构建两个基础过滤器:匹配user1_id=2 和 user2_id=2 const filter1 = Filter('user1_id', '=', jacobUserId); const filter2 = Filter('user2_id', '=', jacobUserId); // 用OR逻辑组合两个过滤器 const orFilter = CompositeFilter('OR', [filter1, filter2]); // 构建并执行查询 const query = datastore.createQuery(kind).filter(orFilter); const [relations] = await datastore.runQuery(query); console.log('Jacob的所有关系:', relations); return relations; } // 调用查询函数 getJacobRelations().catch(console.error);
补充说明
CompositeFilter是Datastore模式实现多条件OR查询的核心API,支持将多个过滤器通过OR/AND逻辑组合。- 执行上述查询后,会直接返回所有包含Jacob(user_id=2)作为
user1_id或user2_id的关系记录,即你需要的spouse和father_son两条数据。
内容的提问来源于stack exchange,提问作者JayantSeth
相关产品推荐
相关产品推荐

