2014-10-31 49 views
3

我试图创建一个简单的DocumentDb存储过程以更好地理解其概念。在这个例子中,我试图返回所有“女性”用户。我是否需要关注自己是否返回一个匹配的文档或多个文档?简单的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??? 
} 

我想返回所有的女性用户。可能有一个或一万名女性用户。

我很感谢你对这个简单的DocumentDb存储过程的帮助。谢谢。

回答

5

你在正确的轨道上。

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

例如:

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的网站上存储过程的一些样品和文件:http://azure.microsoft.com/en-us/documentation/articles/documentdb-programming/

+3

你想了解延续和评估continuationToken - 你的例子可能会返回部分结果集。 以下是带有Procedures&Triggers JS代码的MSDN示例解决方案的链接:https://code.msdn.microsoft.com/windowsazure/Azure-DocumentDB-NET-Code-6b3da8af – Toons33 2014-10-31 14:06:12

+0

感谢您提供持续令牌! – Sam 2014-10-31 15:02:45

+0

@ Toons33,同上感谢MSDN示例。我之前看过那个示例页面,但因为标题是“Azure DocumentDB .NET代码示例”而被驳回,因此我不是用.NET编写的。这次我终于注意到了“DocumentDB.Samples.ServerSideScripts”部分,包括[Count.js](https://code.msdn.microsoft.com/windowsazure/Azure-DocumentDB-NET-Code-6b3da8af/sourcecode?fileId = 134860&pathId = 1415025635)这个例子很好地说明了延续。 – shoover 2015-04-13 21:16:50

相关问题