firebase - 在数组 Firestore 中使用地图的复合查询
问题描述
我需要创建一个复合查询来检索数组中映射中具有特定值的所有文档。我的数据库的有用部分如下所示:
appointments(collection)
doc1(document)
people(array)
person1(map)
userId(field)
person2(map)
userId(field)
我需要获取具有特定 userId 的人员的所有文档(如 doc1),该用户 ID 是一个常量。我对需要发生的事情有一个全球性的想法,但我并不真正理解这个查询。我目前有以下内容:
const snapshot = db.collection('appointments').where('people.userId', 'array_contains', userId).get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
db.collection('appointments').doc(doc.id).update({
//Change the data I need to change
},{merge:true});
});
});
我不知道如何构造这个 where 子句。谁能帮我这个?提前致谢!
解决方案
在 Firestore 中无法查询数组中的嵌套映射值。您必须将此数据转换为可以查询的内容,或者将足够多的数据复制到另一个字段中以使其成为可能。
您可以做的一件事是创建一个仅包含用户 ID 字符串的新字段,并对该数组使用包含数组的查询。
推荐阅读
- spss - 将数据从列移动到数据集中的新行中
- kotlin - 在kotlin中创建具有某种类类型数组的数据类
- arrays - mongodb中的合并聚合
- excel - 运行时错误“1004”无法在 Excel 2010 中设置工作表类的可见属性,而不是在 2013 中
- jenkins - 端口 80 上的 centos 7.x jenkins2
- c# - 如何构建包含依赖项的 .NET Framework 可执行文件
- quartus - 如何在大型 quartus 设计项目中找到节点和实体?
- window - Vaadin 8 组件中的值发生变化时窗口回滚到开头
- python - 将 SHAP 值聚合到特征集是否有效?
- ruby-on-rails - Rails 5 强参数不允许主模型