首页 > 解决方案 > 在 Firestore 中查询没有映射键的文档

问题描述

我在 Firestore 中有几个文档,每个文档都包含一个用户 ID 映射。例如:

// Document 1
userIds: {
    "1": true,
    "2": true,
    "3": true,
    ...
}

// Document 2
userIds: {
    "2": true,
    "3": true,
    ...
}

// Document 3
userIds: {
    "2": true,
    "3": true,
    "4": true,
    ...
}

我想查找其userIds地图不包含某个用户 ID 的所有文档。我试过使用这个查询:

.where('userIds.1', isEqualTo: null)

然而,这并没有得到预期的结果。通过上面的查询,所有文档都被返回。文件 2 和 3 应被退回。

我怎样才能做到这一点?

标签: databasefirebaseflutterdartgoogle-cloud-firestore

解决方案


您无法查询文档中是否缺少数据。这不是 Firestore 索引的工作方式。索引通过在易于搜索的结构中记录值的存在来工作。它们无法存储几乎无限数量的不存在的值。如果你想搜索某个东西,它实际上必须在一个已知位置有一个值。


推荐阅读