问题标签 [morphia]

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 投票
3 回答
14453 浏览

java - 按 Id 查询 Morphia

我正在使用 Morphia,MongoDB 的 Pojo 映射器,我发现在我看来应该非常简单的任务很困难:通过 id 获取对象。我能够找到集合中的所有对象,但我无法弄清楚使用从列表中获得的 id 进行查询的简单任务。我实际上是在谈论 ObjectId。如果我尝试用 JSON 渲染它,我会看到

0 投票
1 回答
1469 浏览

mongodb - 使用 Morphia 测试 MongoDB 集群

我一直在副本集配置中尝试 MongoDB,以了解它如何扩展/执行/应对。

我一直在使用Morphia ( Mongo 的 Java 驱动程序之上的 POJO 映射层)将 10,000 个简单的随机文档保存到单个集合中。我已经用注释注释了我的 POJO(MyData在下面的代码段中),@Entity(concern="REPLICAS_SAFE")希望发送到数据库的数据能够安全地持久化。

我的 POJO 由ObjectId字段(Mongo 的主键类型)、一个String随机长度的随机字符(最多 20 个字符)和一个long使用Random.nextLong().

我的代码如下:

我建立了一个四节点副本集集群,运行上述程序,然后开始隐喻地拔出电缆,看看发生了什么。

期望的结果是程序一直运行,直到它成功地将所有文档持久化到数据库中。

经过几次之后,实际结果是以下之一:

  • Java 报告它已经提交了 10k 个条目,但数据库只有 <10k
  • Java 报告它已提交 <10k 并且数据库报告相同或更少的值
  • 一切正常

在一种情况下,重新启动的节点实际上无法赶上 PRIMARY 节点,因此必须使用已删除的数据库从头开始。尽管将 opfile 参数增加到 2 gigs,但我认为这足以重播 10,000 行非常简单的数据。

你应该知道的其他事情:

  1. 所有这些都运行在单个硬件(2 gig Pentium D!)上,集群运行在两个 32 位 Ubuntu Server VirtualBox 实例上,每个实例有 128 兆内存,Java 客户端在 Windows XP 主机内运行。每个虚拟机上运行两个mongod进程,另外还有一个仲裁器也在一个虚拟机上运行。
  2. 两台虚拟机上的时钟关闭了几秒钟(我需要安装 VirtualBox Guest Additions 来解决这个问题),但不是很大 - 10gen 说时间不应该是集群的问题,但我想我' d 提及它。

我知道 Mongo 在 32 位机器上的 2 gig 限制,其他人的记录消失的事实,而且我知道我正在做这些测试的机器并不完全在前 500 名(这就是为什么我选择保留的数据很小的原因)但是当我的测试工作时,它们工作得很好。

我的问题是否证明 Mongo 还没有为黄金时段做好准备,还是我做错了什么?

我正在使用 1.6.5。

非常感谢任何见解、提示、提示、指针、解释或批评!

ps:我不是在拖钓——我真的很喜欢 NoSQL 的想法,因为它适用于各种数据,所以我真的希望它能够工作,但到目前为止我运气不佳!

0 投票
2 回答
1231 浏览

java - 使用 MongoDB 和 Morphia 编译 GWT 应用程序

我尝试编译使用 MongoDB 和 Morphia 的 GWT 应用程序,但出现异常:

Morphia 和 MongoDB jar 被插入到 Java 构建路径的库部分(我使用的是 Eclipse)。我还附上了 MongoDB 源代码。

当我不使用 Morphia 时,一切正常。

这是我的课程代码:

怎么了?

谢谢。

0 投票
3 回答
2528 浏览

java - Morphia/MongoDB:不能做 getmore

我正在尝试使用 Morphia 遍历我的 MongoDB 数据库中的所有行(“文档”?)。有时我会得到以下堆栈跟踪:

在 MongoDB 日志文件中,我看到以下内容:

我的迭代代码非常简单:

吗啡虫?MongoDB 错误?我的虫子?

更新:

我也在我的 glassfish 日志中看到了这一点:

0 投票
2 回答
2416 浏览

mongodb - Morphia/MongoDB:如何迭代不同的字段

我想遍历给定文档中不同字段的列表。使用 MongoDB 命令行,我可以通过执行以下操作获得我想要的东西:

...除了它将所有结果作为巨大的 BSON 返回。

有没有办法在 Morphia 中做到这一点,并进一步将其返回为Iterable,以便所有结果不会一次全部读入内存?

我想这distinct()是作为某种内存中的哈希图实现的,这可能意味着我尝试逐个迭代结果以避免一次将它们全部放在内存中是没有意义的。

0 投票
2 回答
1255 浏览

mongodb - Morphia/MongoDB:从高级查询中对搜索结果进行排序

一般来说,我对MorphiaMongoDB和面向文档的数据库还很陌生。我正在寻找有关如何解决以下问题的一般指导。

我们有一个包含大约 500KBook文档的数据库。

我们需要对标题和描述字段执行全文搜索。为此,我创建了titleFTSdescriptionFTS数组,分别包含来自titledescription字段的单词,过滤掉停用词,然后提取词干。

搜索时,用户输入关键字,我们返回匹配所有输入词的图书,例如:

这很好用,但现在我们遇到了困难的部分:我们希望根据多个条件对上述查询的结果进行排序。一种这样的建议排序如下:

  1. titleFTS与和descriptionFTS字段中的搜索词匹配的书籍
  2. titleFTS仅在该领域匹配的书籍
  3. descriptionFTS仅在该领域匹配的书籍
  4. 数量最多的书籍sales
  5. 最高的书rating
  6. 最高的书ratingscount

我们的应用程序是用 Java 编写的,并使用 MorphiaDB API。我可以很容易地设想如何为这类事情编写 Java Comparator,但显然我想在 DB 级别进行排序。

这最终让我想到了一个问题:这可以使用 Morphia API 来完成吗?还是我需要深入研究使用 DB.command() 编写 Javascript?它需要 Map/Reduce 吗?如果是这样,关于如何为这个问题实现 map/reduce 的提示会很有帮助。

0 投票
4 回答
2794 浏览

orm - Morphia 用于 Scala

是否可以在 Scala 中使用 Morphia?

是否还有其他支持 Scala 的 MongoDB 轻量级 ORM?

0 投票
1 回答
747 浏览

scala - PlayFramework 与 Scala 和 Morphia

我不断收到此异常:

糟糕:CannotCompileException 由异常引起的意外错误 CannotCompileException: [source error] ds() not found in models.dc

我的代码有什么问题?

这是models.ds

这是models.dc

0 投票
2 回答
1750 浏览

java - Morphia 在春季登录 log4j

我想用 log4j 在 Sfl4j 上记录 Morphia。从 Morphia 的文档中:

在应用程序的开头添加它。它只做一次,静态的。MorphiaLoggerFactory.registerLogger(SLF4JLoggerImplFactory.class);

我无法为上述语句创建必要的 bean 来完成这项工作。

0 投票
3 回答
5079 浏览

scala - scala中是否有类似orm的mongodb库?

似乎只有casbah我们可以在scala中使用,但我希望scala有一个类似orm的库,如morphiajava或其他。

有没有?我不想morphia在 scala 中使用,因为我必须将 java 集合转换为 scala


更新

我已经尝试了其中的一些,但仍然没有找到合适的。有些对于 scala 新手来说很难上手。

最后

最后,我选择了mongo-scala-driver,它很棒。谢谢大家。