我知道可以对具有空值的字段进行空查询。
对于我来说,我有一些包含Map的文档,我想查询所有不包含给定键的文档。就我而言,此密钥是字符串格式的日期。
我确实尝试使用以下代码执行此操作,但是它不起作用。相反,它获取所有文档:
Stream<List<Employee>> availableEmployeesForGivenDesignation(
String designation, DateTime date) {
// in firstore the keys of a map are Strings, thus I have to change DateTime to String
var formatter = new DateFormat('yyyy-MM-dd');
String formatedDate = formatter.format(date);
//todo check why I am getting with null also the false employees
return _employeeCollection
.where('designations', arrayContains: designation)
.where('busy_map.$formatedDate', isEqualTo: null)
.snapshots()
.map((snapshot) {
return snapshot.documents
.map((doc) => Employee.fromEntity(EmployeeEntity.fromSnapshot(doc)))
.toList();
});
}
据我了解,我正在查询地图密钥,对于某些文档,此密钥(日期)并不总是存在。这就是为什么我试图获取这些在这种情况下返回null的文档的原因。
数据库结构:
答案 0 :(得分:0)
找到答案...
我必须将以下行更改为:
.where('busy_map.$formatedDate', isNull: true)
因此,不要使用isEqual
,而要使用isNull