我创建了一个Azure函数,当将新文档添加到集合中时会触发该函数。
public static void Run(IReadOnlyList<Document> input, ILogger log)
{
if (input != null && input.Count > 0)
{
log.LogInformation("Documents modified " + input.Count);
log.LogInformation("First document Id " + input[0].Id);
}}
是否可以从此集合中选择一个特定的文档,然后查询所选文档中的数据?
例如。在名为clothescollection的集合中,我有一个ID为:12345Tops的文档。我想查询ID为12345的文档中找到的数据。
或者检索集合中的第一个文档,然后查询所选的第一个文档
我使用http触发器查看过天蓝色函数:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb#trigger---attributes
但是我需要使用cosmosdb触发器,因为在将文档添加到集合时需要触发该操作。
答案 0 :(得分:1)
如果我理解正确,您是否要根据第一个集合上发生的更改查询第二个集合上的文档?
那当然是可行的,您需要使用Cosmos DB Input Binding and pull the DocumentClient
instance。
代码类似于:
config.omniauth :instagram, ENV["INSTAGRAM_CLIENT_ID"], ENV["INSTAGRAM_CLIENT_SECRET"]
# i had plain text instead of the env tags, but it made no difference
答案 1 :(得分:0)
我认为您不必致电CosmosDb即可从CosmosDb触发器中检索完整文档。
您应该能够获取json并将其反序列化为所需的类型。 请参见下面的示例函数。
您可以执行ToString()从要传递给该函数的文档列表中提取文档内容。或者,您可以将json直接反序列化为您拥有的对象。
public static class CosmosDbAuditFunction
{
[FunctionName("CosmosDbAuditFunction")]
public static void Run([CosmosDBTrigger(
databaseName: "DBNAME",
collectionName: "COLLECTIONNAME",
ConnectionStringSetting = "CosmosDbConnectionString",
LeaseCollectionName = "LeaseCollection",
CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> input, ILogger log)
{
if (input != null && input.Count > 0)
{
var changedDocumentjson = input[0].ToString();
}
}
}