问题标签 [azure-cosmosdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1701 浏览

azure-cosmosdb - 如何从 DocumentDb 的集合中删除文档?

我想删除 DocumentDb 中的特定文档。我找不到对 DELETE 或 REMOVE 语法的引用。有人可以告诉我该怎么做吗?

0 投票
1 回答
3660 浏览

document-database - 我应该在 DocumentDb 中非规范化还是运行多个查询?

我正在学习 DocumentDb 中的数据建模。这是我需要一些建议的地方

请在下面查看我的文档的外观。

我可以在这里采取两种方法,各有利弊。

场景一:

如果我通过将项目团队成员信息(即名字、姓氏、电子邮件等)保存在与项目相同的文档中来保持数据非规范化(请参阅下面的文档),我可以在一个查询中获得我需要的信息,但是当 Jane Doe结婚并且她的姓氏改变了,我必须更新 Projects 集合中的很多文档。我还必须非常小心,以确保包含员工信息的文档的所有集合也得到更新。例如,如果我在 Projects 集合中更新 Jane Doe 的名字,但忘记更新 TimeSheets 集合,我会遇到麻烦!

场景二:

如果我保持数据标准化并在项目文档中只保留 EmployeeId,那么每当我想获得项目列表时,我就可以运行三个查询:

  • 查询1返回项目列表
  • 查询 2 会给我出现在第一个查询中的所有项目团队成员的 EmployeeId
  • 查询 3 获取员工信息,即名字、姓氏、电子邮件等。我将使用查询 2 的结果来运行这个

然后我可以合并我的应用程序中的所有数据。

这里的问题是 DocumentDb 现在似乎有很多限制。我可能正在阅读数百个项目团队中有数百名员工的项目。看起来没有有效的方法来获取 ID 出现在我的第二个查询中的所有员工信息。同样,请记住,我可能需要在这里提取数百个员工信息。如果我将以下 SQL 查询用于员工数据,我可能需要多次运行相同的查询才能获得所需的所有信息,因为我认为我不能拥有数百个 OR 语句:

我了解 DocumentDb 仍处于预览阶段,其中一些限制将得到修复。话虽如此,我应该如何解决这个问题?如何有效地存储/管理和检索我需要的所有项目数据——包括项目团队信息?方案 1 是更好的解决方案还是方案 2,还是有更好的第三种选择?

这是我的文件的样子。一、项目文件:

这里有两个员工文档,它们位于员工集合中:

0 投票
1 回答
1921 浏览

c# - 从 DocumentDb 中删除文档

我正在尝试从名为Employees 的DocumentDb 集合中删除一个特定文档。当我运行以下代码时,出现“任务已取消”错误。

我究竟做错了什么?

0 投票
1 回答
2910 浏览

c# - 将数据保存到 DocumentDb 中的多个集合中

在 DocumentDb 中,解耦数据以便将它们保存在单独的集合中的最佳方式和位置是什么?

到目前为止,大多数关于如何使用 DocumentDb 管理数据的示例都使用简单的对象,但在现实生活中,我们几乎从未这样做过。我只想了解在将复杂类保存为 DocumentDb 中的 Json 对象之前,我需要如何以及在何处处理它们。

让我们看下面的例子。我会将我的项目信息保存到 Projects 集合中,但我不想在项目文档中保存项目团队中人员的全名。我只想将他们的 EmployeeId 保存在项目文档中。我有一个单独的员工集合,我想在其中保存人员/员工的特定信息。我的项目对象如下所示:

我的 TeamMember 类继承自 Employee 对象,如下所示:

我的 Employee 类如下所示:

在保存到 Projects 集合之前,以下是我的 Project 文档的示例:

如您所见,我将我的项目信息与员工数据分离,以便将它们分别存储在他们自己的集合、项目和员工集合中。

让我们不要讨论为什么我应该或不应该解耦数据。我只想看看我应该如何以及在哪里处理解耦以产生最快的结果。我想遵循最佳实践,所以我只想看看使用 DocumentDb 的专家如何处理这种情况。

我可以想到两个地方来处理这个问题,但我想了解是否有更好、更直接的方法来做到这一点:

  1. 我可以在我的 C# 代码中将我的 Project 类转换为 JSON 对象,并将 JSON 对象传递给 DocumentDb 进行存储。
  2. 或者,我可以将我的 Project 对象直接传递给 DocumentDb,传递给一个 JavaScript 存储过程,然后我可以处理解耦并将数据存储在 DocumentDb 中的两个或多个集合中。

这是我想知道的:

  1. 哪个是处理解耦数据的正确位置?
  2. 哪个会提供更好的性能?
  3. 有没有更好的方法来处理这个?我一直在阅读有关如何将我的 POCO 类传递给 DocumentDb 的信息,它会为我处理它们。DocumentDb 会处理这种更复杂的场景吗?如果是这样,怎么做?

我感谢您的帮助。谢谢你。

0 投票
5 回答
5932 浏览

azure - 如何在 DocumentDB 中执行现有的存储过程?

我想在 DocumentDB 中创建一个存储过程,并在以后需要时使用它。要执行存储过程,我需要知道一个 storedProcedureLink。当我使用 CreateStoredProcedureAsync 方法注册存储过程时,我得到了链接,如果我想稍后执行这个存储过程,我应该把这个链接存储在自己的某个地方吗?如果我只知道一个过程名称,我可以执行存储过程吗?从我发现的所有示例中,我似乎需要在需要执行存储过程之前创建和注册存储过程,是这样吗?

0 投票
1 回答
129 浏览

data-access-layer - 您会将数据访问权限置于 Azure 辅助角色中吗?

我正在构建一个将在 Azure 上运行的 ASP.NET MVC 5 应用程序。我正在使用 DocumentDb 和 Azure 表存储来管理我的数据。

我正在考虑将我的 DAL 函数移动到我使用 HTTP 从我的 Web 角色调用的 Azure Worker Role,而不是消息队列。

我认为,通常情况下,工作角色用于对时间不敏感的后端作业,但我认为没有理由不能将我的 DAL 移动到响应 HTTP 请求的工作角色。我认为这将为我的数据层提供很好的分离,并且可以很容易地进行扩展/扩展。

自从我切换到需要一些额外工作处理数据的 DocumentDb 和 Azure 表存储之后,这对我来说就更有意义了。我认为工人角色将是处理所有额外工作的理想选择,因为它可以更容易地扩大规模。

无论如何,我想得到其他人对此的建议和看法。请让我知道你的想法。

0 投票
2 回答
4589 浏览

azure-cosmosdb - DocumentDb 的 C# poco 的自定义序列化

是否可以更改 documentDb 的 C# poco 的默认序列化?例如,id-property 似乎需要小写,但 Id 属性的默认序列化是大写。理想情况下,我们希望所有 json 属性都以小写字符开头。到目前为止,我们发现的唯一方法是用 [JsonProperty(PropertyName = "id")] 装饰属性,但这不是很优雅。

0 投票
2 回答
598 浏览

asp.net-mvc - How do I call Web API from MVC without latency?

I'm thinking about moving my DAL which uses DocumentDb and Azure Table Storage to a separate Web API and host it as a cloud service on Azure.

The primary purpose of doing this is to make sure that I keep a high performance DAL that can scale up easily and independently of my front-end application -- currently ASP.NET MVC 5 running as a cloud service on Azure but I'll definitely add mobile apps as well. With DocumentDb and Azure Table Storage, I'm finding myself doing a lot of data handling in my C# code, therefore, I think it would be a good idea to keep that separate from my front-end application.

However, I'm very concerned about latency issues introduced by HTTP calls from one cloud service to another which would defeat the purpose of separating DAL into its own application/cloud service.

What is the best way to separate my DAL from my front-end application without introducing any latency issues?

0 投票
2 回答
2516 浏览

azure - 删除具有空值的属性

在我的 DocumentDb 文档中,我不想包含具有 NULL 值的属性。例如,我有以下 POCO 类。

有些人没有中间名,当我将一个人的文档保存在我的收藏中时,我不希望包含中间名。目前,没有中间名的人被保存为:

这是正常行为吗?如果没有,我如何不在的文档中包含具有 NULL 值的中间名属性?

PS 所有的序列化/反序列化都由 JSON.NET 处理

0 投票
1 回答
863 浏览

azure - 用于查询集合的 DocumentDB 和客户端 JavaScript API

我正在使用 DocumentDB 的客户端 javascript API。我希望能够查询一个集合。我想使用一个集合 URL,例如:“ https://mydocumentdb.documents.azure.com:9443/dbs/my_db/colls/my_users ”但似乎没有 API 函数可供我查询 documentdb集合没有首先拥有数据库“自我链接”,然后又获得集合“自我链接”。获得这些自我链接的唯一方法似乎是首先遍历我的所有数据库,然后提取正确的自我链接,然后遍历我的集合,获取集合,最后,使用我从服务中获得的自我链接进行查询集合。

真的???