问题标签 [ravendb]

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 投票
1 回答
532 浏览

c# - RavenDB 中的设置操作

我阅读了有关 ravendb 集合操作的这篇文章,但它并没有准确地告诉我如何通过 C# 更新一组文档。我想更新所有符合特定条件的文档的字段。或者换一种说法,我想采用这个 C# 并使其更高效:

0 投票
1 回答
747 浏览

c# - 如何批量上传关系数据并将其转换为 RavenDB 中的聚合?

我试图弄清楚如何将关系数据有效地批量插入到 RavenDB 中,特别是在从关系数据转换为聚合的情况下。

假设我们有两个表的两个转储文件:OrdersOrderItems. 它们太大而无法加载到内存中,所以我将它们作为流读取。我可以阅读每个表并在 RavenDB 中创建一个与每一行对应的文档。我可以使用批处理请求作为批量操作来执行此操作。到目前为止简单高效。

然后我想在服务器上转换它,摆脱OrderItems它们并将它们集成到它们的父Order文档中。如果没有数千次往返,我怎么能做到这一点?

答案似乎介于基于集合的更新实时投影非规范化更新之间,但我不知道在哪里。

0 投票
2 回答
2202 浏览

c# - 使用 RavenDB 持久性插件连接 JOliver 的 EventStore

我正在评估JOliver 的 EventStore库。特别是,我正在尝试使用RavenDB作为 EventStore 的持久化引擎。EventStore 附带了一个插件。注意:数据库是空的,没有索引(默认索引除外)。

在连接商店时,我使用了以下内容:

但是,当我运行我的程序时,我得到一个异常,表明找不到“RavenCommitByRevisionRange”索引。

在挖掘 EventStore 代码时,我认为问题恰好是 RavenPersistenceEngine 没有被初始化。初始化代码在 RavenDB 服务器中安装所需的索引。

在 SQL Server 方面,我注意到示例项目中的接线代码显示了对名为“InitializeStorageEngine”的扩展方法的调用。此扩展方法与“PersistenceWireup”类相关联。但是,我用来连接 RavenDB 持久性的扩展方法返回类“Wireup”。所以我将部分连线代码包装在一个新的 PersistenceWireup 实例中,并且能够像这样调用“.InitializeStorageEngine()”:

这很好用!RavenDB 数据库现在包含必要的索引。

所以...我的问题:“.UsingRavenPersistence(...)”不应该返回“PersistenceWireup”的实例,而不仅仅是“Wireup”吗?或者有没有更好的方法在 EventStore 中连接 RavenDB 持久性?

0 投票
1 回答
602 浏览

c# - 在 RavenDb 中引用值对象父实体对象

我最近一直在玩 RavenDB,有些事情让我有点恼火。

我有一个带有一系列值对象的实体对象,例如

有很多次我想将 Bar 类型的对象传递给方法/类,但在某些时候想要引用回父实体。在 NHibernate 的世界中,如果我将其配置为 1..* 关系,那真的很容易,例如

然而,RavenDb 并不真正喜欢这导致我不得不创建如下方法:

而不是

有什么方法可以通过 RavenDb 实现这一目标?

我意识到 RavenDb(以及一般的文档数据库)促进了一种不同的处理实体的方式,如果这只是我在关系/规范化世界中花费太长时间的一个例子,任何人都可以解释我应该如何构建我的代码以更多的文档数据库方式?

0 投票
1 回答
748 浏览

c# - 在 RavenDB 中按 ID 排序

有没有办法让 Raven 按 Id 字段对查询结果进行排序,就好像它是整数一样。因此,如果我执行以下查询,“cars/2”将出现在“cars/11”之前:

0 投票
1 回答
1294 浏览

ravendb - 无法将 JSON 对象反序列化为“Raven.Json.Linq.RavenJObject”类型

我尝试使用 Raven.Client.Lightweight-3.5 版本 1.0.0.0 构建 .NET 3.5 和 4。

运行以下代码时出现上述错误:任何想法为什么?

异常跟踪:

0 投票
1 回答
419 浏览

nosql - RavenDB(或其他面向文档的数据库)的建模问题

想知道一些更有经验的人(或任何比我有更好想法的人)将如何处理我的特定建模场景......

我有一个典型的“Category -> SubCategory -> TertiarySubCategory”场景,我不确定我是否正确映射它。我将它直接映射到 MVC 路由,因为 raven 似乎很适合这个。在最终类别下(可以在第一、第二或第三级别,将有一个仅与该类别级别相关联的项目列表。所以,我们可能有类似的内容:

单级类别:'/政治/'

第二级类别:“政治/人”或“政治/网站”

三级类别:“体育/职业/排球”或“体育/大学/足球”

在传统的 RDBMS 中,这很容易通过主键/外键 + 一些连接......所以,想知道我将如何处理 Raven?

根据我的阅读,我应该将整个“体育/职业/排球”URI 或密钥存储在属于它的项目列表中吗?

IE -

或者我应该创建一个实际类别类的列表项成员?每个项目都有一个它自己的评论列表......这意味着所有内容都存储在 Raven 内的单个文档中 - 即 -

.....现在,一旦我拉出主要的猫,即-“/sports/pro/volleyball/”,我已经拥有了我需要的一切

{ ............. ETC ............... }

现在在这里我可以遍历 Items 集合和它的评论集合....这是否使用急切加载?如果我在一个类别项目下有一百万条评论怎么办?当我加载主要类别时,它也会加载所有一百万条评论!?!?

我将不胜感激您能提供的任何帮助。对不起,如果这个例子/问题不清楚......如果你们需要,我会尽力澄清任何事情。再次感谢!

0 投票
2 回答
989 浏览

data-modeling - 在像 RavenDB 这样的面向文档的数据库系统中,我将如何对分层和关系数据进行建模?

面向文档的数据库(尤其是 RavenDB)真的很吸引我,我想尝试一下它们。然而,作为一个非常习惯关系映射的人,我试图思考如何在文档数据库中正确地建模数据。

假设我的 C# 应用程序中有一个包含以下实体的 CRM(省略了不需要的属性):

我正在考虑将这一切都放在一个Company文档中,因为联系人和任务在公司之外没有目的,并且大多数时候查询任务或联系人也会显示有关关联公司的信息。

问题来自Task实体。假设业务要求任务始终与公司相关联,但也可选择与任务相关联。

在关系模型中,这很容易,因为您只有一个Tasks表并Company.Tasks与公司的所有任务相关,而Contact.Tasks只显示特定任务的任务。

为了在文档数据库中建模,我想到了以下三个想法:

  1. 将任务建模为单独的文档。这似乎是一种反文档数据库,因为大多数时候您查看公司或联系人,您将希望查看任务列表,因此必须对文档执行很多连接。

  2. 将不与联系人关联的任务保留在Company.Tasks列表中,并将与联系人关联的任务放在每个单独联系人的列表中。不幸的是,这意味着如果您想查看公司的所有任务(可能很多),您必须将公司的所有任务与每个联系人的所有任务结合起来。当您想将任务与联系人解除关联时,我还认为这很复杂,因为您必须将其从联系人移至公司

  3. 将所有任务保留在Company.Tasks列表中,每个联系人都有一个与其关联的任务的 id 值列表。Task除了必须手动获取 id 值和必须为联系人制作实体子列表之外,这似乎是一个不错的方法。

在面向文档的数据库中对这些数据建模的推荐方法是什么?

0 投票
3 回答
1539 浏览

asp.net-mvc-3 - 使用存储库模型的 MVC3 和 Ninject 每个请求的 RavenDB 会话

我正在寻找一些关于正确机制的建议,用于以真正的 session-pr-request 行为将 RavenDB IDocumentSession 放入我的存储库。

这是一个全新的 MVC3 应用程序,我使用 NuGet 获得了 Ninject / Ninject.MVC3。RavenDB 在外部服务器上运行(即非嵌入式)。

我已经设置了 Ninject 模块来返回正确的存储库,以及每个请求的会话。

但是 - MVC3 是否会为每个操作方法实例化控制器?在这种情况下,我可以只允许 MVC3/Ninject 注入我的存储库和他们需要的会话,没问题。

但是,如果一个控制器在多个请求中重复使用,这可能不起作用,因为之前请求的存储库现在可能会使用一个旧的并被丢弃的会话。

我已经研究了几种方法来做到这一点 - 以上是基本的方法。我也尝试过在每个请求开始时从 IoC 容器获取新会话的 ActionFilterAttribute 之类的操作 - 但在这种情况下,我应该把它放在哪里?

我的存储库是否应该有一个它使用的 Session 属性,它每次实际上都从容器中获取当前会话?这会增加存储库实现和 IoC 容器之间的耦合,但我猜应该可以。

这样做的正确方法是什么?酷孩子们是怎么做到的?任何帮助将不胜感激!

0 投票
1 回答
301 浏览

collections - Ravendb - 从父实体中“选择”集合实体

我正在尝试在 raven 中创建一个索引,该索引将(出于所有意图和目的)投射对特定用户创建的所有博客文章的所有评论。目前我已经管理了一个 map 语句,它只返回有评论的帖子。

最后,我将要翻阅评论,因此我需要获得所有匹配项目的平面列表。

谢谢