firestore 中具有相同值的字段的默认 "orderBy" 标准是什么?
What is the default "orderBy" criteria in firestore for fields with same value?
假设有一个文档集合,其特定字段包含一个整数。
doc1={id:'dskjb12312',value:10}
doc2={id:'trhb12312',value:10}
doc3={id:'wqfewf12',value:20}
doc4={id:'dtyjnr312',value:30}
现在,如果我执行如下查询,我将获得 3 个文档,它们的分数按降序排列。
collection('Collection').orderBy('value','desc').limit(3).get()
前两个文档如下所示,因为它们是按降序排列的。
doc4={id:'dtyjnr312',value:30}
doc3={id:'wqfewf12',value:20}
由于有两个文档的值为 30,因此 Firestore 决定第 3 个文档的默认方式是什么?它是随机的还是背后有任何预定义的逻辑?
我知道我可以在不同的字段上使用第二个“orderBy”来获得高级查询,但只是想知道单个“orderBy”的默认行为是什么,其中存在具有相同值的字段。
除了您在查询中指定的顺序外,文档将按照其文档 ID 的顺序返回。因此,如果两个文档具有相同的值,则具有“较低”文档 ID 的文档将排在第一位。
我不确定这是如何明确记录的,但这是文档在每个查询用来确定结果的索引中的表示方式的自然结果。除了您定义索引的任何字段外,它还将始终包含文档 ID(或者在集合组索引的情况下,文档路径)以确保索引中的每个条目都是唯一的。
假设有一个文档集合,其特定字段包含一个整数。
doc1={id:'dskjb12312',value:10}
doc2={id:'trhb12312',value:10}
doc3={id:'wqfewf12',value:20}
doc4={id:'dtyjnr312',value:30}
现在,如果我执行如下查询,我将获得 3 个文档,它们的分数按降序排列。
collection('Collection').orderBy('value','desc').limit(3).get()
前两个文档如下所示,因为它们是按降序排列的。
doc4={id:'dtyjnr312',value:30}
doc3={id:'wqfewf12',value:20}
由于有两个文档的值为 30,因此 Firestore 决定第 3 个文档的默认方式是什么?它是随机的还是背后有任何预定义的逻辑?
我知道我可以在不同的字段上使用第二个“orderBy”来获得高级查询,但只是想知道单个“orderBy”的默认行为是什么,其中存在具有相同值的字段。
除了您在查询中指定的顺序外,文档将按照其文档 ID 的顺序返回。因此,如果两个文档具有相同的值,则具有“较低”文档 ID 的文档将排在第一位。
我不确定这是如何明确记录的,但这是文档在每个查询用来确定结果的索引中的表示方式的自然结果。除了您定义索引的任何字段外,它还将始终包含文档 ID(或者在集合组索引的情况下,文档路径)以确保索引中的每个条目都是唯一的。