按顺序在不同字段上按顺序存储一个范围查询

基法

我有以下收藏/文件

Location Collection
{
  "geoHash" : "wwscjrm3nu01",
  "timeStamp" : "March 25, 2020 at 1:07:38 PM UTC-4" 
}
{
  "geoHash" : "wwscjrm2wc2h",
  "timeStamp" : "March 25, 2020 at 2:07:38 PM UTC-4" 
}

请使用上面的示例替换GeoHashs#

屏幕截图

因此,我尝试通过按时间戳“ DESC”对它们进行排序来查询这些GeoHash的范围,如下所示

    db.collection('location')
        .where('geoHash', '>=', 'wwkxt4kxmmvk')
        .where('geoHash', '<=', 'wwt4vsn22peq')
        .orderBy('timeStamp', 'DESC')
        .limit(15).get()

它不起作用,请显示以下错误

Error getting documents { Error: 3 INVALID_ARGUMENT: inequality filter property and first sort order must be the same: geoHash and timeStamp
at callErrorFromStatus (/srv/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
at Http2CallStream.call.on (/srv/node_modules/@grpc/grpc-js/build/src/call.js:79:34)
at emitOne (events.js:121:20)
at Http2CallStream.emit (events.js:211:7)
at process.nextTick (/srv/node_modules/@grpc/grpc-js/build/src/call-stream.js:97:22)
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
code: 3,
details: 'inequality filter property and first sort order must be the 
same: geoHash and timeStamp',
metadata: Metadata { internalRepr: Map {}, options: {} } }

如果我每个月或每天有成千上万个文档,该怎么办!?你们中的任何人都面临这个问题吗?解决该问题的最佳方法是什么?

更新0.2

非常感谢您在解决此问题方面的帮助和支持。我转载了我最后看到的东西。

当前,我在Node js中使用以下查询

       db.collection('locations')
        .where('geoHash', '>=', 'wwkxt4kxmmvk')
        .where('geoHash', '<=', 'wwt4vsn22peq')
        .orderBy('geoHash')
        .orderBy('timeStamp', 'desc')
        .limit(15).get().then(snapshot => {
          if (snapshot.empty) {
            console.log('No matching documents.');
          }
          snapshot.forEach(doc => {
            console.log(doc.data());
          });
        });

期望是过滤“ GeoHashs”>“订购GeoHashs”>“按时间戳排序”。因此,最终结果应该是有序的时间戳,但我看到的是以下内容,

10:08:24.901 AM
   test
    { geoHash: 'wwscjrm3nu01',
      timeStamp: Timestamp { _seconds: 1585227600, _nanoseconds: 0 },
      post: '3' }
10:08:24.900 AM
   test
    { geoHash: 'wwscjrm3nu01',
      timeStamp: Timestamp { _seconds: 1585317000, _nanoseconds: 0 },
      post: '1' }
10:08:24.900 AM
   test
    { geoHash: 'wwscjrm2wc2h',
      timeStamp: Timestamp { _seconds: 1585314000, _nanoseconds: 0 },
      post: '2' }

如您在上面的输出中看到的,我只是基于timeStamp查看Post 1> 2> 3,但是我在上面看到的是Post 2> 1> 3。

弗兰克·范普菲伦

因此,您的工作查询是:

db.collection('locations')
  .orderBy("geoHash")
  .where('geoHash', '>=', range.lower)
  .where('geoHash', '<=', range.upper)
  .orderBy('timeStamp', 'DESC')
  .limit(15).get()

从我所看到的结果中,您得到的结果是按排序的geoHash,然后才按排序timeStamp因此:如果两个文档具有相同的geoHash值,则它们将按其timeStamp顺序排列

这按预期工作:在字段上进行范围查询时,始终始终需要首先对该字段进行排序。而且,由于您首先对该字段进行排序,因此结果将以该字段的顺序返回。

这是Firestore的查询模型所固有的,因此可能有助于进一步了解。.性能保证意味着一旦找到查询的起点,它就必须始终能够从数据库中流式传输结果。对未知数量的结果重新排序将使始终无法满足性能保证成为不可能,因此不支持此操作。

为了按时间戳顺序获得结果,您需要在应用程序代码中对它们重新排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询以按其他字段选择一个字段顺序

来自分类Dev

创建一个以升序存储项目或按该顺序打印的链表

来自分类Dev

按顺序更新从另一个表获取值的字段

来自分类Dev

单击不同的按钮时,如何在一个文本视图中按顺序添加文本?

来自分类Dev

SQL 查询,我可以在一个案例中按顺序排序吗?

来自分类Dev

根据另一个表列按 DESC 顺序对 MySQL 查询结果进行排序

来自分类Dev

按字母顺序对多维数组进行排序,按值并将其存储在一个新变量中

来自分类Dev

将列表元素按其在另一个列表上的成员资格顺序分组

来自分类Dev

将列表元素按其在另一个列表上的成员资格顺序分组

来自分类Dev

AngularJS:如何按顺序执行一个defered数组?

来自分类Dev

创建一个按位顺序排序的序列

来自分类Dev

按指定顺序创建一个数组

来自分类Dev

按另一个顺序对向量重新排序

来自分类Dev

按顺序打印下一个单词

来自分类Dev

按顺序显示一个数字递增的框

来自分类Dev

按字典顺序 nk 的下一个排列

来自分类Dev

mysql按字段名顺序包含在另一个表中的字段值

来自分类Dev

字符串按字母顺序排列-不按字母顺序排列第一个单词

来自分类Dev

如何从数组中按字母顺序获取第一个值或按字母顺序排列该数组?

来自分类Dev

尝试按一个按钮,然后按顺序或随机播放音频

来自分类Dev

按顺序将一个json的键值附加到另一个

来自分类Dev

线程组按顺序执行,但一个接一个。次数:循环次数

来自分类Dev

sql按分组方式将2个查询以不同顺序组合

来自分类Dev

顺序不同的两个查询之间的T-SQL UNION,全部按

来自分类Dev

按asc sql查询顺序

来自分类Dev

按日期游标查询顺序

来自分类Dev

psql-在任一字段上按字母顺序排序

来自分类Dev

别名一个程序的顺序与$ PATH的顺序不同

来自分类Dev

按顺序在wordpress上显示自定义字段

Related 相关文章

  1. 1

    SQL查询以按其他字段选择一个字段顺序

  2. 2

    创建一个以升序存储项目或按该顺序打印的链表

  3. 3

    按顺序更新从另一个表获取值的字段

  4. 4

    单击不同的按钮时,如何在一个文本视图中按顺序添加文本?

  5. 5

    SQL 查询,我可以在一个案例中按顺序排序吗?

  6. 6

    根据另一个表列按 DESC 顺序对 MySQL 查询结果进行排序

  7. 7

    按字母顺序对多维数组进行排序,按值并将其存储在一个新变量中

  8. 8

    将列表元素按其在另一个列表上的成员资格顺序分组

  9. 9

    将列表元素按其在另一个列表上的成员资格顺序分组

  10. 10

    AngularJS:如何按顺序执行一个defered数组?

  11. 11

    创建一个按位顺序排序的序列

  12. 12

    按指定顺序创建一个数组

  13. 13

    按另一个顺序对向量重新排序

  14. 14

    按顺序打印下一个单词

  15. 15

    按顺序显示一个数字递增的框

  16. 16

    按字典顺序 nk 的下一个排列

  17. 17

    mysql按字段名顺序包含在另一个表中的字段值

  18. 18

    字符串按字母顺序排列-不按字母顺序排列第一个单词

  19. 19

    如何从数组中按字母顺序获取第一个值或按字母顺序排列该数组?

  20. 20

    尝试按一个按钮,然后按顺序或随机播放音频

  21. 21

    按顺序将一个json的键值附加到另一个

  22. 22

    线程组按顺序执行,但一个接一个。次数:循环次数

  23. 23

    sql按分组方式将2个查询以不同顺序组合

  24. 24

    顺序不同的两个查询之间的T-SQL UNION,全部按

  25. 25

    按asc sql查询顺序

  26. 26

    按日期游标查询顺序

  27. 27

    psql-在任一字段上按字母顺序排序

  28. 28

    别名一个程序的顺序与$ PATH的顺序不同

  29. 29

    按顺序在wordpress上显示自定义字段

热门标签

归档