Azure functions 防止Cosmos DB在Azure函数中查询之前返回所有文档
我已经编写了一个Azure函数,它在函数的中途构建了一个CosmosDb文档查询,并执行该查询以在集合中查找文档 由于我为CosmosDB指定了绑定,但没有提供Id或Sql查询,因此默认情况下是否检索整个集合?如果是这样的话,有没有办法防止这种情况发生,因为我只想在构建文档查询并返回结果后查询集合 我是否需要指定inout的方向以实现此目的Azure functions 防止Cosmos DB在Azure函数中查询之前返回所有文档,azure-functions,azure-cosmosdb,Azure Functions,Azure Cosmosdb,我已经编写了一个Azure函数,它在函数的中途构建了一个CosmosDb文档查询,并执行该查询以在集合中查找文档 由于我为CosmosDB指定了绑定,但没有提供Id或Sql查询,因此默认情况下是否检索整个集合?如果是这样的话,有没有办法防止这种情况发生,因为我只想在构建文档查询并返回结果后查询集合 我是否需要指定inout的方向以实现此目的 public static class SynchroniseMemberData { [FunctionName("Synchronise
public static class SynchroniseMemberData
{
[FunctionName("SynchroniseMemberData")]
public static void Run([EventGridTrigger] EventGridEvent eventGridEvent, ILogger log,
[CosmosDB(
databaseName: "MembersData",
collectionName: "Members",
ConnectionStringSetting = "offers_DOCUMENTDB"),
]
DocumentClient client,
[CosmosDB(
databaseName: "MembersData",
collectionName: "Members",
ConnectionStringSetting = "offers_DOCUMENTDB")
]
out object document
)
{
log.LogInformation(eventGridEvent.Data.ToString());
MemberDetails memberDetails = JsonConvert.DeserializeObject<MemberDetails>(eventGridEvent.Data.ToString());
Uri collectionUri = UriFactory.CreateDocumentCollectionUri("MembersData", "Members");
var query = client.CreateDocumentQuery<Document>(collectionUri).Where(p => p.Id == memberDetails.id);
var member = query.AsEnumerable().FirstOrDefault();
if (member == null)
{
document = new
{
//Create New Member
};
}
else
{
//update member details and save back
document = member;
}
}
否,拉动DocumentClient不会查询集合
在中,当您请求DocumentClient时,它使用CosmosDBClientBuilder获取属性值的DocumentClient实例:
rule.BindToInput<DocumentClient>(new CosmosDBClientBuilder(this));
你有宇宙触发函数吗?如果可能,发布函数代码。添加到代码中,实际触发器来自EventGridTrigger您看到了什么行为使您认为它默认获得了整个集合?文档中的“抱歉”,我的意思是-代码的哪一部分返回了整个集合?您正在对输入使用DocumentClient绑定,因此在执行查询之前不会实际获得任何结果?
ICosmosDBService service = _configProvider.GetService(resolvedConnectionString, attribute.PreferredLocations, attribute.UseMultipleWriteLocations, attribute.UseDefaultJsonSerialization);
return service.GetClient();