Azure函数CosmosDB触发器返回编码数据?

Azure函数CosmosDB触发器返回编码数据?,azure,azure-functions,azure-cosmosdb,Azure,Azure Functions,Azure Cosmosdb,我编写了一个简短的azure函数,只需从CosmosDB更改提要触发器接收数据 但是,它似乎返回某种形式的编码数据 比如说 { "_id" : ObjectId("5ad8db107dfa95101430ab94"), "id" : "task123", "type" : "genera123l", "information" : "some task" } 如果上述文档是在my cosmos db中创建的 public static void Run(IRea

我编写了一个简短的azure函数,只需从CosmosDB更改提要触发器接收数据

但是,它似乎返回某种形式的编码数据

比如说

{
    "_id" : ObjectId("5ad8db107dfa95101430ab94"),
    "id" : "task123",
    "type" : "genera123l",
    "information" : "some task"
}
如果上述文档是在my cosmos db中创建的

public static void Run(IReadOnlyList<Document> documents, TraceWriter log)
{
    if (documents != null && documents.Count > 0)
    {
        log.Info("Documents modified " + documents.Count);
        log.Info("First document Id " + documents[0].Id);
    }
}
而不是

2018-04-19T19:28:23.899 [Info] Documents modified 1
2018-04-19T19:28:23.899 [Info] First document Id task123
这是预期的输出。 这里有没有我遗漏的配置

看起来CosmosDB或Azure Function应用程序的文档都没有 解决这一问题:(


谢谢

我假设您使用Azure CosmosDB MongoDbAPI进行输入绑定

请尝试使用Azure CosmosDB SQL API。您可以参考此详细步骤。然后您可以得到预期的答案。有关更多信息,请参考此

如果在Cosmos DB帐户上使用MongoDB API,请不要使用Azure Cosmos DB输入或输出绑定。数据可能损坏。


您使用的是MongoDB API帐户。您看到的是BSON文档在JSON中的表示,而不是编码问题

这就是BSON>JSON转换的原因


虽然您可以从技术上使用函数的Change Feed、使用Change Feed SDK或通过编程将SQL SDK与任何Cosmos DB API帐户一起使用,但如果您在Mongo帐户中使用二进制属性,它们将转换为JSON。

显示Id值来自文档的“\u Id”,而不是“Id”参数。在base64为_id创建了正确的值。看起来它被读取为ObjectId,
2018-04-19T19:28:23.899 [Info] Documents modified 1
2018-04-19T19:28:23.899 [Info] First document Id task123