Azure cosmosdb 简单DocumentDb存储过程

Azure cosmosdb 简单DocumentDb存储过程,azure-cosmosdb,Azure Cosmosdb,我试图创建一个简单的DocumentDb存储过程,以便更好地理解其概念。在本例中,我试图返回一个所有“女性”用户的列表。我是否需要考虑返回单个匹配文档或多个文档 以下是我的用户对象的外观: { "id": "e85ee3d7-44a5-4250-a116-686e1c2a10f5" "firstName": "Jane", "lastName": "Doe", "gender": "F" } 以下是迄今为止我的storedproc的外观: function(gender

我试图创建一个简单的DocumentDb存储过程,以便更好地理解其概念。在本例中,我试图返回一个所有“女性”用户的列表。我是否需要考虑返回单个匹配文档或多个文档

以下是我的用户对象的外观:

{
   "id": "e85ee3d7-44a5-4250-a116-686e1c2a10f5"
   "firstName": "Jane",
   "lastName": "Doe",
   "gender": "F"
}
以下是迄今为止我的storedproc的外观:

function(gender) { 

   var context = getContext();
   var response = context.getResponse();
   var collection = context.getCollection();
   var collectionLink = collection.getSelfLink();

   var filterQuery = "SELECT * FROM c WHERE c.gender = '" + gender + "'";
   // Now what???
}
我想返回所有女性用户。可能有一个或10000个女性用户


非常感谢您对这个简单的DocumentDb存储过程的帮助。谢谢。

你说得对

接下来的步骤是对集合运行filterQuery,然后将查询响应放入response变量中

例如:

function(gender) {
  var context = getContext();
  var response = context.getResponse();
  var collection = context.getCollection();
  var collectionLink = collection.getSelfLink();

  var filterQuery = 'SELECT * FROM c WHERE c.gender = "' + gender + '"';

  collection.queryDocuments(collectionLink, filterQuery, {},
    function(err, documents) {
      response.setBody(response.getBody() + JSON.stringify(documents));
    }
  );
}

您可以在DocumentDB的网站上找到更多关于存储过程的示例和文档:

您希望了解continuation并计算continuationToken——您的示例可能会返回部分结果集。以下是指向MSDN示例解决方案的链接,其中包含过程和触发器JS代码:@Toons33,与感谢MSDN示例相同。我以前看过这个示例页面,但因为标题是“Azure DocumentDB.NET Code Samples”,而我不是在.NET中写作,所以我将其删除。这次我终于注意到了“DocumentDB.Samples.ServerSideScripts”部分,包括一个很好地说明了继续的示例。现在可以在GitHub上的Azure代码示例库中找到。此示例代码已经移动了好几次,因此如果链接出现问题,请在GitHub中搜索
org:Azure
和术语
存储过程continuationtoken
。也许有一天我(或其他人)会把一个例子编辑成答案。