问题标签 [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 回答
789 浏览

mongodb - 是否可以使用 Morphia 简单地更新 Mongo 中的所有字段?

我们正在用 Morphia 映射 Mongo。Morphia 有许多优化,允许文档中的更新仅应用于更改的字段。

很感激,但此刻,我需要未优化的案例。我只想保存一个实体,而不用担心哪些字段发生了变化。

当然,我可以简单地调用 save(),但这会调用生命周期方法,就好像我在创建一个新对象一样。

也许这就是答案:save() 并让我的生命周期方法足够聪明,以检测这是“重新保存”而不是创建新实体。

如果有更好的方法,我当然会很高兴听到它。

0 投票
1 回答
301 浏览

java - 重用 Morphia 查询有没有好的模式?

我刚刚分析了一些代码,其中我使用以下代码增加了一些频率计数器:

查询的创建占用了几乎 50% 的执行时间,我想以某种方式重用这项工作。query将和对象保存ops在 ThreadLocal 中并 query.field("text").equal(text)再次调用以替换“文本”字段是否安全?看起来验证占用了总时间的 30% 左右。

0 投票
2 回答
10933 浏览

mongodb - 将枚举保存到 mongoDB

有没有办法将枚举保存到 mongoDB 中?我想保存类似的东西:

0 投票
1 回答
4074 浏览

java - Playframework,将 JSON 转换为模型(使用 Gson),保存模型失败

我正在尝试将 JSON 字符串转换为我的模型类。我在游戏框架中使用吗啡。

以下是相关的代码行:

但我认为我做错了什么,因为这段代码引发了以下异常:

似乎以下行引发了此异常:

这是模型的代码:

我现在的问题是如何解决这个问题,或者我必须如何根据 json 输入创建模型实例?

0 投票
2 回答
4390 浏览

java - Morphia:在嵌入对象列表中搜索空值

我有一个嵌入式实体列表:

在这个列表中,我想搜索任何具有特定属性(我们称之为foo)的嵌入式实体,而不是另一个(bar)。所以在 Java 中foo应该是非 null 和barnull / 在 MongoDB 中不存在。

我尝试了以下代码(我确实有Entity包含列表的 UUID):

如果列表为空或只有一个条目(其中foo有一个值bar但尚不存在),这将正常工作。但是只要任何bar属性有值,查询就会返回错误的结果。所以我正在寻找一个查询,它遍历所有嵌入的实体并触发任何缺失bar的 . 那可能吗?

示例数据:

PS:我得到相同的结果.field("embedded.bar").hasThisOne(null)

PPS:手动遍历列表元素并不是一个真正的选择,因为我想使用查询进行更新操作。

PPS:我认为这是 Morphia 中的一个错误 - 请参阅下面的答案 ( https://stackoverflow.com/a/9705175/573153 ) 以了解解决方法

0 投票
2 回答
1338 浏览

mongodb - 如何在 morphia 中复制这个 js 地理空间查询?

通过 shell 脚本查询 mongodb 中的地理空间数据看起来很简单,但是,我试图在 morphia (playmorphia) 中复制一些代码。

获取一定半径内的所有点,文档说:

这是我的 Peak 模型中的代码:

它有效,但我使用 ds().find() 做错了吗?有没有更优雅的方式来使用模型,例如 Peak.find..?谢谢!

0 投票
2 回答
600 浏览

java - 如何使用 Morphia 映射未注释的 pojo?

存在一个我无法控制的类:

我想把这个人坚持到 Mongo 中,但我不能用@Entity其他注释来改变这个类的定义。

我希望 Mongo 中的文档看起来类似于:

解决这个问题的最佳方法是什么?转换器?扩展课?包含类?

0 投票
1 回答
1821 浏览

java - 基于嵌套文档的可用部分数据进行查询(在morphia,mongoDB中)

文档结构(仅用于说明)

员工

询问 -

我只有地址 -> 街道(字符串类型)和地址 -> 国家 -> 名称(字符串类型)。我想让所有符合这个标准的员工。

不获取结果(当实际上有一个真正的匹配时)。看起来是因为部分“国家”文件匹配。如果我填充Country 的所有字段,它会得到预期的结果。

问题#1:上述任何解决方法?

问题 #2:地址是一个数组,我可以获得多个 (address#street, country#name) 对,并且我想要与给定对匹配的员工列表。就像是:

注意:我可以分解地址匹配这样的东西

但这将匹配地址#1 中的 street="bla bla" 和 country.name!="hoo" 以及地址#2 中的 street!="bla bla" 和 country.name="hoo" 的员工。你明白了。我不希望这样的员工被退回。

请让我知道这是否可能。非常感谢。

0 投票
2 回答
2047 浏览

java - 在morphia中如何根据其他两个整数字段查询和返回字段是否相同

我有运行和使用 morphia 的 mongodb。
有一个BatchData文档集合,需要过滤掉一些字段值。

这是实体:

如果val1等于val2,则查询应返回uuid

这是最简单的,但它当然不起作用:

或者

可能有 100 万个或更多BatchData文档,所以我只能出于性能原因
返回。uuid

一直在阅读 wiki,但无法理解或看到两个成员字段的过滤器
Morphia wiki

0 投票
2 回答
1002 浏览

mongodb - 在heroku上获取无效的Mongo ObjectId但不是在本地

在 MongoLab 上使用 Morphia 1.2.6a 和 MongoDB 设置、播放 1.2.4(不是通过附加组件)

更新查看问题底部的解释。

在 Prod 的本地机器上运行并播放服务页面,没有错误。推到heroku,数据库在下面。除了任何数据库事务之外,play 工作正常。

我正在使用 Long 作为我的 ID,如果这与它有任何关系,请播放 config morphia.id.type=Long

在这一点上,我被困住了。任何帮助,非常感谢。

Application.conf # 配置数据库名称。默认值:测试

这是heroku的网络应用程序堆栈:

奇怪的是,它使用相同的 mongolab db 在我的机器上运行(play run --%prod),但在 Heroku 上失败。Heroku 日志四舍五入到秒 - 没有多大帮助。我想知道 Heroku 是否用自定义驱动程序覆盖?Heroku 有一个 MongoLab 的“附加”产品,我怀疑这与它有关,但那是在黑暗中刺伤。

我将尝试使用 Heroku mongolab 插件进行测试,看看是否可行。这很痛苦,因为我已经有了一个数据库,但值得一试——我想。

从 heroku 拉下一个克隆并运行 play deps --sync,在本地运行没有错误。

看起来与应用程序版本(在节点上)的这个问题很相似。我希望这不是一场野鹅追逐。

固定。这是交易。Heroku 不喜欢框架 ID 我至少为本地测试设置了三个单独的框架 ID 和两个不同的数据库提供程序。其中一个被设置为我的产品 (%prod.)。Heroku 不喜欢这些。消除配置上的所有前缀框架ID(我不得不注释掉所有其他数据库)和砰,就像一个魅力。我认为 heroku 需要在他们的配置解析器上工作。

这是 eclipse 中的 Framework ID 设置。发现重建我的开发箱后,这个问题又出现了。我注意到从包含框架参数的命令行运行播放不会导致任何错误。做了更多的研究,发现 Play eclipsify 命令覆盖了构建配置(我的 IDE 是 eclipse)。新生成的配置“VM 参数”不包括框架 id 值“-Dplay.id=”(它是空白的)。我为我的开发启动器将此值更改为“-Dplay.id=dev”,并且 Play 正确处理了配置。Heroku 默认在 PLAY_OPTS 中传递框架 id --%prod,因此现在两个环境都按预期工作。

为了其他可能有类似问题的人,我正在更新这个问题。我还发现这条评论强化了这一点https://stackoverflow.com/a/9211118/1193291