问题标签 [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 投票
1 回答
2276 浏览

java - 为什么 MongoDB Java 驱动程序/Morphia 两次预先设置一个属性?

这是我的(示例)对象。除了 Morphia 所需的内容外,我没有添加任何其他注释:

TreeHouse对象:

我正在尝试type使用正则表达式查询。这是我正在使用的 MongoDB 查询(并且已被证明可以通过命令行工作):

我可以使用filter来自Query对象的方法在 Java 中生成这个确切的字符串:

但是,当我尝试在 Java 中运行搜索时,我得到ValidationException

注意翻倍house.house.type

我正在使用 0.99 版的 Morphia,并使用 2.5 版的 MongoDB Java 驱动程序。我没有正确地做某事吗?或者这是一个已在较新版本中修复的问题?

0 投票
4 回答
1966 浏览

java - 持久化到 Mongo 数据库时出现 NumberFormatException

我正在创建一个简单的VO对象,然后尝试将其持久化到 Mongo 数据库中,NumberFormatException最糟糕的是,没有从对象本身抛出异常,因为现在没有设置对象的任何属性,这个异常正在杀死我,我不确定如何处理。

这是引发异常的一段代码:

这是异常strace:

我一直在调试这个问题一段时间,还没有找到起点,有什么建议吗?

这是持久化方法:

更新

0 投票
2 回答
3319 浏览

morphia - 如何使用 Morphia 查询最新插入的项目

如何使用 Morphia 查询最新插入的项目以及如何获取集合的大小?

0 投票
1 回答
288 浏览

mongodb - morphia 模块 ObjectIdBinder 已定义错误

我是 morphia、mongoDB 和 playframework 的新手。我正在尝试将这些用于生产。上周我上次运行它时,我的代码运行良好。今天早上,我不断收到以下错误,我不知道如何解决它:

10:20:53,048 信息 ~ 开始 /home/user/NetBeansProjects/um 10:20:53,056 警告 ~ 在 application.conf 中声明模块已弃用。改用dependencies.yml (module.morphia) 10:20:53,060 INFO ~ Module morphia 可用 (/home/user/play-1.2.2/modules/morphia-1.2.1beta6) 10:20:53,062 INFO ~ Module morphia可用 (/home/user/play-1.2.2/modules/morphia-1.2.1beta6) 10:20:54,538 WARN ~ 你正在运行 Play!在 DEV 模式下 10:20:54,828 INFO ~ 在端口 9000 上侦听 HTTP(等待第一个请求开始)... 10:21:03,741 错误 ~

@67c6i5h2e 请求 GET / 的内部服务器错误 (500)

编译错误(在第 12 行附近的 {module:morphia-1.2.1beta6}/app/morphia/ObjectIdBinder.java 中)文件 {module:morphia-1.2.1beta6}/app/morphia/ObjectIdBinder.java 无法编译。引发的错误是:类型 ObjectIdBinder 已定义

play.exceptions.CompilationException:类型 ObjectIdBinder 已经在 play.classloading.ApplicationCompiler$2.acceptResult(ApplicationCompiler.java:246) 的 org.eclipse.jdt.internal.compiler.Compiler.handleInternalException(Compiler.java:672) 中定义org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:516) 在 play.classloading.ApplicationCompiler.compile(ApplicationCompiler.java:278) 在 play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:412)在 play.Play.start(Play.java:482) 在 play.Play.detectChanges(Play.java:596) 在 play.Invoker$Invocation.init(Invoker.java:186) 在 Invocation.HTTP Request(Play!)

我也不记得更改代码中的任何内容。

0 投票
4 回答
40241 浏览

java - MongoDB 组合键

我刚刚开始使用 MongoDb,我注意到我得到了很多重复的记录,这些记录是我想要唯一的。我想知道如何为我的数据使用复合键,我正在寻找有关如何创建它们的信息。最后,我使用 Java 来访问 mongo 和 morphia 作为我的 ORM 层,因此在您的答案中包含这些内容会很棒。

吗啡:http ://code.google.com/p/morphia/

0 投票
1 回答
5925 浏览

java - Morphia 保存新实体而不是更新 _id

对不起,非常愚蠢的问题。我正在使用 Morphia 1.00。有一些实体:

以及其他一些字段,setter 和 getter。尝试保存相同的实例:

据我所知,mongoDb 必须执行 upsert 命令(意思是“如果存在则更新;如果缺少则插入(单个文档)”)。但是,mongo 不仅仅是更新 _id 字段,而是将新实体保存在数据库中。

0 投票
5 回答
94600 浏览

java - 使用 MongoDB 进行单元测试

我选择的数据库是 MongoDB。我正在编写一个数据层 API 来从客户端应用程序中抽象实现细节——也就是说,我本质上是在提供一个公共接口(一个充当 IDL 的对象)。

我正在以 TDD 方式测试我的逻辑。在每个单元测试之前,@Before调用一个方法来创建一个数据库单例,之后,当测试完成时,@After调用一个方法来删除数据库。这有助于促进单元测试之间的独立性。

几乎所有的单元测试,即执行上下文查询,都需要预先发生某种插入逻辑。我的公共接口提供了一个插入方法——但是,将此方法用作每个单元测试的前导逻辑似乎是不正确的。

我确实需要某种模拟机制,但是,我在模拟框架方面没有太多经验,而且 Google 似乎没有返回任何可能与 MongoDB 一起使用的模拟框架。

其他人在这些情况下会怎么做?也就是说,人们如何对与数据库交互的代码进行单元测试?

此外,我的公共接口连接到在外部配置文件中定义的数据库 - 使用此连接进行单元测试似乎不正确 - 再次,这种情况会从某种模拟中受益吗?

0 投票
1 回答
1016 浏览

java - Morphia 泛型 - 不可能?

我正在尝试通过 Mongo/Morphia 保存泛型列表(M)。当我尝试保存时出现此错误:

com.google.code.morphia.mapping.MappingException:不支持通用类型类:= class java.lang.Object

这是否意味着 Morphia 根本不支持泛型?有没有可行的替代方案?使用泛型为我节省了 16 个类。必须有一种更简单的方法是允许的。

令人惊讶的是,我无法找到任何有用的信息来解决这个错误。

0 投票
5 回答
4278 浏览

mongodb - Mongo中错误的ObjectId

我对 Mongo DB 有疑问。不知何故,我在行条目中有一个错误的 ObjectId。ObjectId 的长度无效。

我如何强制 Mongo 删除该 ObjectId ?

谢谢

0 投票
2 回答
277 浏览

mongodb - 什么是最快的,@Entity 或 @Embedded?

我是 NoSql MongoDb 的新手(今天)并试图了解 Morphia。
我想要一个这样的@Entity:


如果我有 3 个名为Stat
Friendlist
Userdata的表(集合)
,我将 UserData.Class 保存在 Userdata 权限中,并将 Statistic.Class 保存在 Stat 中,依此类推...

我的想法是,如果我给每个用户一个唯一的 ObjectId UUID nr,然后每个 Statistic 和 FriendList 都有这个 UUID nr 作为 ObjectId。因为如果程序只需要运行统计信息,它将仅加载/针对统计信息工作。

如果有像 18000/小时的请求来获取 UserData,那么像这样声明它们会不会更快:(
我使用相同的 ObjectId,它们存储在单独的集合(表)中