【问题标题】:Morphia and MongoDB - Modeling Something like SettingsMorphia 和 MongoDB - 建模之类的设置
【发布时间】:2010-11-04 15:01:14
【问题描述】:

我现在正在评估 MongoDB 和 Morphia。我将如何模拟“设置”之类的东西,其中只有一个“记录”(我不确定要使用的正确 Mongo 术语)。我必须覆盖实体类中的保存方法吗?一个如何做到这一点以及如何使用它的例子会很棒。

比如我要存储首页配置:

home page settings
  show friends list:  false
  marketing text:  "You'll love it here"
  main image:  main.jpg

【问题讨论】:

  • IRC 上有人建议我只在我的设置脚本/代码中创建一次文档,然后只单独更新字段。

标签: java mongodb


【解决方案1】:

如果您基本上只想要应用程序的一个设置副本(例如单例),那么我建议您这样做:

@Entity
class Settings {
  @Id int id = 0;
  boolean showFriendsList = false;
  String marketingText = "You'll love it";
  byte[] mainImage = ...; 
}

由于 id 设置为单个值,因此当您调用 save 时,它​​将始终更新单个实体。如果你调用 insert,并且那里已经有一个,你会得到一个错误(如果你正在检查错误)。

您可以使用 get/change/save 或更新语义来更新实体。

Datastore ds = ...;

//get/change/save
Settings s = ds.find(Settings.class).get(); //like findOne in the shell/driver
s.showFriendsList = true;
ds.save(s); 

//or update
ds.updateFirst(ds.find(Settings.class), ds.creatUpdateOperations(Settings.class).set("showFiendsList", true));

【讨论】:

  • 太棒了!很好的答案,而且速度非常快!
猜你喜欢
  • 1970-01-01
  • 2018-06-26
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
相关资源
最近更新 更多