gpt4 book ai didi

c# - 使用 Id 列表查询 CosmosDB 的建议方法是什么

转载 作者:行者123 更新时间:2023-12-03 03:39:01 26 4
gpt4 key购买 nike

我的分区键使用的是一个值。现在它是一个用户列表。如何使用分区键列表?这是我的查询内容。

const string queryText = @"SELECT *
FROM c
WHERE ARRAY_CONTAINS(@Ids, c.UserID) = true
-- LastModified
AND DateTimeFromParts(StringToNumber(SUBSTRING(c.LastModified, 0, 4))
,StringToNumber(SUBSTRING(c.LastModified, 5, 2))
,StringToNumber(SUBSTRING(c.LastModified, 8, 2)))
-- Current Date/Time minus 60 days
>= DateTimeAdd('day', -60, GetCurrentDateTime())
ORDER BY c.LastModified DESC
";
var query = new QueryDefinition(queryText);

ids?.Add(LoggedInUser.Id);
query.WithParameter("@Ids", ids?.ToArray());

var returnList = new List<CosmosItemModel>();
var requestOptions = new QueryRequestOptions { PartitionKey = new PartitionKey(loggedInUserId) };
var feedIterator = Container.GetItemQueryIterator<CosmosItemModel>(queryDefinition, null, requestOptions);
while (feedIterator.HasMoreResults)
foreach (var item in await feedIterator.ReadNextAsync())
returnList.Add(item);

但是当我使用 LoggedInUser 作为 mu 分区键时,我只获取该用户的文档,而不是查询中的用户列表。如何使用我的 id 列表作为分区键?

最佳答案

微软建议不要 querying across multiple partitions如果您因为 RU 成本而拥有大型容器。

除此之外,您只需向查询添加 OR 即可。

SELECT * FROM c WHERE c.partitionKey = @partitionA OR c.partitionKey = @partitionB

正如 David Makogon 指出的那样,ARRAY_CONTAINS 可能不是您要查找的内容。

关于c# - 使用 Id 列表查询 CosmosDB 的建议方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72090388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com