0

在使用 Mongo API 在 Azure Cosmos DB 上执行存储过程后,Mongo 集合已损坏。这是存储过程的主体:

function bulkImport(docs) {
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();


    var count = 0;


    if (!docs) throw new Error("The array is undefined or null.");

    var docsLength = docs.length;
    if (docsLength == 0) {
        getContext().getResponse().setBody(0);
    }


    tryCreate(docs[count], callback);


    function tryCreate(doc, callback) {
        var options = {
            disableAutomaticIdGeneration: true
        };

        var isAccepted = collection.createDocument(collectionLink, doc, options, callback);

        if (!isAccepted) getContext().getResponse().setBody(count);
    }


    function callback(err, doc, options) {
        if (err) throw err;

        count++;

        if (count >= docsLength) {
            getContext().getResponse().setBody(count);
        } else {
            tryCreate(docs[count], callback);
        }
    }
}

这里直接在 Cosmos DB 数据浏览器中执行存储过程。输入:[{'类型':'A','名称':'测试'}]。

4

2 回答 2

0

我注意到您设置disableAutomaticIdGenerationtrue,并且您没有"id"在 input 中提供属性[{ 'type': 'A', 'name':'test' }]。这将导致异常。

您可以设置disableAutomaticIdGeneration为,false或者您在输入中提供"id"属性并且它可以工作。

希望它可以帮助你。

于 2018-05-14T03:34:08.707 回答
0

这是我从 Azure 支持人员那里听到的:

触发器和 UDF 是通过我们的 SQL API 公开的功能。#CosmosDB 的 MongoDB API 使用 MongoDB 可编程表面积——它不使用存储过程、触发器、UDF 的概念。请通过 AskCosmosDB@microsoft.com 与我们联系,我们将为您提供帮助。

于 2018-05-16T02:26:43.027 回答