我正在尝试对字段ID进行查询过滤。我想返回所有包含字段ID的文档,然后返回其值。
在此示例中,我想做类似的事情:
db.collection("assistencia").where(">>> 0qSzBxVimwRlurLHNzXp EXIST <<<<") <=== I don't know what I need to put here
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
})
有什么建议吗?
答案 0 :(得分:0)
Firestore不提供任何查询来检查字段是否存在。您的数据模型应考虑到这一事实。
如果要检查其他字符串中是否有字符串,则可以添加列表字段,并使用包含数组的查询来查找列表中该字符串存在的文档。如果该字段名为“ items”:
db.collection("assistencia").where("items", "array-contains", "0qSzBxVimwRlurLHNzXp")
随后,您将获得包含所需数据的文档,并且可以在其他字段中查找所需文档中的值。
答案 1 :(得分:0)
我会非常直言不讳:您不仅在使用Firestore时出错,而且在任何数据库上也出错。
如前所述,Firestore不提供任何查询来检查字段是否存在。但是,这并不意味着您无法查询具有字段的文档。
Firestore也没有“通配符”,但这并不意味着您无法查询所有值...
因此:当您查询字段时,Firestore将 仅 返回具有字段的文档。
此外:您可以使用“大于”查询,其值为NULL- 任何 值都大于NULL。
因此要获取 具有 字段“ Retard”
的所有文档db.collection("assistencia").where("Retard", ">", /000)
这将返回该集合中的 所有 个文档,这些文档具有一个具有非空值的“延迟”字段。 非常不推荐 使用此技术。它不会缩放。我 曾经做过这样的事情,一次是从一个数据结构到另一个数据结构的极度hacky传输-从来没有面向客户端。
获取具有“ Retard”特定值的所有文档
db.collection("assistencia").where("Retard", "==", "0qSzBxVimwRlurLHNzXp")
您只能按照设计的使用方式来使用数据库。