Azure cosmosdb 如何使用查询更新Documentdb中的文档?

Azure cosmosdb 如何使用查询更新Documentdb中的文档?,azure-cosmosdb,Azure Cosmosdb,如何使用查询更新文档数据库中的文档(基本上希望使用存储过程更新文档)?以下示例可能就是您需要的: 以下是一个简化版本: function updateSproc(id, update) { var collection = getContext().getCollection(); var collectionLink = collection.getSelfLink(); var response = getContext().getResponse(); t

如何使用查询更新文档数据库中的文档(基本上希望使用存储过程更新文档)?

以下示例可能就是您需要的:

以下是一个简化版本:

function updateSproc(id, update) {
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();
    var response = getContext().getResponse();

    tryQueryAndUpdate();

    function tryQueryAndUpdate(continuation) {
        var query = {query: "select * from root r where r.id = @id", parameters: [{name: "@id", value: id}]};
        var requestOptions = {continuation: continuation};

        var isAccepted = collection.queryDocuments(collectionLink, query, requestOptions, function (err, documents, responseOptions) {
            if (err) throw err;

            if (documents.length > 0) {
                tryUpdate(documents[0]);
            } else {
                throw new Error("Document not found.");
            }
        });
    }

function tryUpdate(document) {
    var requestOptions = {etag: document._etag};

    var fields, i;

    fields = Object.keys(update);
    for (i = 0; i < fields.length; i++) {
       document[fields[i]] = update[fields[i]];
    }

    var isAccepted = collection.replaceDocument(document._self, document, requestOptions, function (err, updatedDocument, responseOptions) {
        if (err) throw err;
        response.setBody(updatedDocument);
    });
}
函数updateSproc(id,update){
var collection=getContext().getCollection();
var collectionLink=collection.getSelfLink();
var response=getContext().getResponse();
tryQueryAndUpdate();
函数tryQueryAndUpdate(续){
var query={query:“从根r中选择*,其中r.id=@id”,参数:[{name:@id,value:id}]};
var requestOptions={continuation:continuation};
var isAccepted=collection.queryDocuments(collectionLink、query、requestOptions、function(err、documents、responseOptions){
如果(错误)抛出错误;
如果(documents.length>0){
tryUpdate(文件[0]);
}否则{
抛出新错误(“未找到文档”);
}
});
}
函数tryUpdate(文档){
var requestOptions={etag:document.\u etag};
var字段,i;
字段=Object.keys(更新);
对于(i=0;i