Cosmos Db 如何检查集合是否为空

Cosmo Db how to check that if the collection is empty

我有一个代码可以获取cosmo db中一个集合中的所有数据,如果集合为空则开始插入。

第一次代码是 运行 但是,SetIterator.HasMoreResults return 集合是空的,即使集合是空的。 然后会出现错误 Microsoft.Azure.Cosmos.CosmosException : Response status code does not indicate success: NotFound,我已经检查了一个不为空的集合,代码 运行 没问题。

我可以使用 try catch 来处理它,但这似乎不是一个好的解决方案,有谁知道如何检查集合是否为空?

            var itemList = new List<T>();

            using (FeedIterator<T> setIterator = _container.GetItemLinqQueryable<T>()
                                                        .ToFeedIterator())
            {
                while (setIterator.HasMoreResults)
                {
                    foreach (var item in await setIterator.ReadNextAsync())
                    {
                        itemList.Add(item);
                    }
                }
            }
            return itemList;

您可以使用索引在 cosmos db 中获取空集合。为此,您可以使用唯一索引。只为不包含任何文档的索引创建唯一索引。

Important

Unique indexes can be created only when the collection is empty (contains no documents).

要在集合上创建唯一索引,您可以通过 unique indexes