Morphia和MongoDB - 像设置一样建模

Bra*_*ord 3 java mongodb

我正在评估MongoDB和Morphia.我如何模拟"设置"之类的东西,其中只有一个'记录'(我不确定要使用的正确的Mongo术语).我必须覆盖实体类中的save方法吗?如何执行此操作以及如何使用它的示例将非常棒.

例如,我想存储主页配置:

home page settings
  show friends list:  false
  marketing text:  "You'll love it here"
  main image:  main.jpg
Run Code Online (Sandbox Code Playgroud)

Sco*_*dez 8

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

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

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

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

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));
Run Code Online (Sandbox Code Playgroud)