azure-cosmosdb - 如何查询自上次查询以来的所有新文档和更新文档?
问题描述
我需要查询一个集合并返回自上次查询以来新的或更新的所有文档。该集合由 分区userId
。我正在寻找一个我可以使用(或创建和使用)的值,这将有助于促进此查询。我考虑过使用_ts
:
SELECT * FROM collection WHERE userId=[some-user-id] AND _ts > [some-value]
问题_ts
在于它不够精细,查询可能会错过另一个客户端在同一秒内所做的更新。
在 SQL Server 中,我可以使用IDENTITY
另一个表中的列来完成此操作。让我们打电话给桌子version
。在事务中,我将在表中创建一个新行,version
对另一个表进行更新(包括version
使用新值更新列。要查询新行和更新行,我将使用如下查询:
SELECT * FROM table WHERE userId=[some-user-id] and version > [some-value]
我怎么能在 Cosmos DB 中做这样的事情?更改提要似乎是正确的选择,但没有查询更改提要的能力,我不确定我将如何解决这个问题。
万一重要,(Web/移动)客户端通过 Web api 连接到 Cosmos DB 中的数据。我可以控制整个堆栈——从客户端到后端。
解决方案
这就是事务一致性级别的用途:https ://docs.microsoft.com/en-us/azure/cosmos-db/consistency-levels
选择强一致性,您的查询将始终返回最新的写入。
强:强一致性提供了线性化保证。读取保证返回项目的最新提交版本。客户端永远不会看到未提交或部分写入。始终保证用户阅读最新提交的写入。
推荐阅读
- mysql - MySQL:sql查询/程序根据预订的房间总数获取每家酒店的累计房间
- python - 麦克 | Python 脚本运行良好,在终端插入 Mysql 表但无法作为 Cron 作业运行 | 苹果电脑
- javascript - 如何使用选择过滤 Google Maps API v.3 中 json 数据中的两个属性?
- mobile - 如何在 RecyclerView 中添加 LinearLayout?
- database - NoSQL——跟踪应用程序的数据库设计
- python - 如何逐行正确调整熊猫数据框
- robotframework - 机器人框架中的简单测试用例
- javascript - 处理“流缓冲”和“流中断”音频事件
- julia - 在 windows 10 x64 中的 julia v1.0 中使用 PyPlot 时出错
- c - Cmock 无法识别函数调用