Google cloud firestore 在文档数组中按项查询,按项排序';s在数组中的位置

Google cloud firestore 在文档数组中按项查询,按项排序';s在数组中的位置,google-cloud-firestore,Google Cloud Firestore,我有一个收藏恐龙,其中包含以下结构的文档: doc#1: doc#2: 我想按颜色名称查询集合(例如:green),以获得按颜色在dominantColors数组中的位置排序的文档。首先获取绿色出现在数组中较高位置的文档,然后获取出现在数组中较低位置的文档。因此,在提供的情况下,我将首先获得doc#2,然后是doc#1 每个dominantColors数组包含3个元素,元素从最主要到最少排序 我正在查看文档,但无法找到解决方案。也许我需要一个完全不同的数据结构?云Firestore不支持按排名索

我有一个收藏
恐龙
,其中包含以下结构的文档:

doc#1:

doc#2:

我想按颜色名称查询集合(例如:
green
),以获得按颜色在
dominantColors
数组中的位置排序的文档。首先获取
绿色
出现在数组中较高位置的文档,然后获取
出现在数组中较低位置的文档。因此,在提供的情况下,我将首先获得
doc#2
,然后是
doc#1

每个
dominantColors
数组包含3个元素,元素从最主要到最少排序


我正在查看文档,但无法找到解决方案。也许我需要一个完全不同的数据结构?

云Firestore不支持按排名索引查询数组。查询数组的唯一方法是使用数组包含类型查询

您可以改为使用贴图组织颜色,其中颜色是关键,其等级是值:

name: "Tyrannosaurus rex",
dominantColors: {
    "beige": 1,
    "blue": 2,
    "green": 3
}
然后可以根据地图属性的值对查询进行排序。所以,在JavaScript中,应该是这样的:

firebase
    .collection('dinosaurs')
    .where('dominantColors.green', '>', 0)
    .orderBy('dominantColors.green')

Cloud Firestore不支持按排名索引查询数组。查询数组的唯一方法是使用数组包含类型查询

您可以改为使用贴图组织颜色,其中颜色是关键,其等级是值:

name: "Tyrannosaurus rex",
dominantColors: {
    "beige": 1,
    "blue": 2,
    "green": 3
}
然后可以根据地图属性的值对查询进行排序。所以,在JavaScript中,应该是这样的:

firebase
    .collection('dinosaurs')
    .where('dominantColors.green', '>', 0)
    .orderBy('dominantColors.green')