带有 FeedIterator 或条件语句的 Azure CosmosDb CreateTransactionalBatch

Azure CosmosDb CreateTransactionalBatch with FeedIterator or conditional statement

我们在 .net Core 项目中使用 Microsoft.Azure.Cosmos Version="3.23.0"。 我正在使用事务库进行操作。如果使用特定 属性 的文档数为 0,我想创建一个应删除项目的事务。所有文档都在同一个容器中并使用相同的分区键。 例如有 属性

人的文档
Id: 
PartitionKey: ffff
Name:
LastName: 
Occupation:

职业有第二个文件:

Id:
ParitionKey: ffff
Occupation:
Salary:

如果没有使用此职业的人员文档,我想删除职业文档。 我可以编写查询来获取 Occupation 具有特定值的文档的计数,然后如果计数为 0 则想要删除。想知道我是否可以使用事务库来完成所有这些操作。

我会编写查询来获取这样的计数 -

QueryDefinition queryDefinition =
            new QueryDefinition("SELECT value count(1) FROM c WHERE (c.occupationId= @occupationId)")
                 .WithParameter("@occupationId", occupationId.ToString()));

                    using (FeedIterator<long> feedIterator = container.GetItemQueryIterator<long>(
                        queryDefinition: queryDefinition,
                        requestOptions: new QueryRequestOptions()
                        {
                            PartitionKey = partitionKey
                        }))
                    {
                        while (feedIterator.HasMoreResults)
                        {
                            FeedResponse<long> response = await feedIterator.ReadNextAsync(cancellationToken);
                            
                            long tempCount = response.Sum();
                            docuCount+= tempCount;
                        }
                    }

TransactionalBatch只能包含点操作(Read、Create、Replace、Delete、Patch),不能查询。

并且不能包含条件(例如,其中一个操作取决于前一个操作的结果)。