当前位置: 首页 > 知识库问答 >
问题:

查询Azure Cosmos DB多个文档的有效方法

曾嘉祯
2023-03-14

我将数据存储到cosmos DB,如下所示,我想获得每个索引的最新数据。索引的数量是可变的,至少为10个。

(简化文档)

{
    "receivedTime": "2021-06-11T01:48:02.751Z",
    "source": "server",
    "data": {
        "index": "1",
        "value": "my data"
    },
    "id": "c10ef6dc-53a6-40e0-84d1-551e508d0427",
}

目前,我正在查询索引的数量并显示每个索引的结果。

(仅c.data.index=)

SELECT * FROM c WHERE c.source = 'server' AND c.data.index = '1' ORDER BY c._ts DESC OFFSET 0 LIMIT 1,
SELECT * FROM c WHERE c.source = 'server' AND c.data.index = '2' ORDER BY c._ts DESC OFFSET 0 LIMIT 1,
SELECT * FROM c WHERE c.source = 'server' AND c.data.index = '3' ORDER BY c._ts DESC OFFSET 0 LIMIT 1,
...

但随着索引数量的增加,会出现延迟。

有没有办法一次性全部查询出来?

有没有更有效的方法来查询多个文档?

我使用的是节点.js SDK。


共有1个答案

夏俊杰
2023-03-14
匿名用户

复杂查询的一种替代方法是创建实例化视图,使此操作变得简单而高效。如果要了解每个索引值的最新项目,我们可以创建一个名为 LatestByIndex 的单独容器,并使用更改源来填充每个索引值的最新项目的副本或引用。

为了便于高效读取,最新 ByIndex 项目可以使用关联的索引值作为其 ID。然后,可以通过对 id x 读取点来查找索引 x 的最新索引。该项目可以是原始项目的副本或引用。

实现将是一个更改提要处理器,它在每次观察到主容器中的更改时覆盖< code>LatestByIndex中的项目。您可能还需要一个补充的维护作业,定期刷新最新的信息,作为对变更馈送同步的备份健全性检查。

 类似资料:
  • 我在Cloud Firestore中有以下简化的数据模式: 我现在想向用户展示他团队的所有“待办事项”文档,我不知道什么是最好的方法。 1. 集合组查询 - 按团队 ID 查询 为此需要两个查询。每个待办事项文档都可以具有父团队 ID,并通过集合组查询进行检索,例如 - 到目前为止,这对我来说似乎是最好的解决方案,但缺点是“IN”查询限制为10个值 https://firebase.googleb

  • 在Firestore中,我有一个用户集合,在每个用户文档中存储一个名为favorites的集合,该集合包含标记为favorites(存储)的文档的ID 我可以采取另一种方法来获取两个集合并手动过滤它们,但我使用的是Firebase RecycerView适配器,它显示的所有数据都基于查询,这将使事情更加高效。 这样的结果是如何实现的呢?如果需要进一步的解释,请告诉我

  • 本文向大家介绍MongoDB中一次查询更新多个文档,包括了MongoDB中一次查询更新多个文档的使用技巧和注意事项,需要的朋友参考一下 要通过单个查询更新许多文档,请在MongoDB中使用 bulkWrite()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是使用MongoDB中的一个查询来更新许多文档的查询- 在find()方法的帮助

  • ` ` 我需要使用MongoDB shell命令查询此文档。 我已经尝试过查看$[]、$all和挖掘mongo文档,但似乎都没用。任何想法都是赞赏,谢谢!

  • 我有一个如下的房间模式: 它包含一个事件ID数组。事件架构: 我试过这样的东西: 但它当然不起作用(房间总是空数组)。我真的很难弄清楚。 如何查询具有基于子文档(事件)的条件的文档(房间)?