只有在使用Morphia的新版本时才插入新的Mongo文档

时间:2014-06-14 08:58:33

标签: java mongodb morphia

我正在使用Morphia。

我的文档是POJO:

Hotel{
    @Id
    private long hotelID;
    private String anotherField1;
    private String anotherField2;
    private String anotherField3    
}

在MongoDB 中插入酒店的正确方法是什么?但仅当它是新的hotelID

我了解Morphia(https://github.com/mongodb/morphia/wiki/Updating)中带有“update”参数的createIfMissing方法。但是我的操作不是更新,而是简单的保存(是/否取决于数据库中POJO的存在)。

对于最佳方式的任何建议表示赞赏。

2 个答案:

答案 0 :(得分:2)

您所描述的是save操作:

  

datastore.save(NEWOBJECT);

如果存在具有相同_id的文档,则将替换整个文档。否则,将创建一个新文档。

使用createIfMissing选项也可以实现同样的效果,基本上是upsert操作(如果存在则更新文档文档,否则创建它)。

两个命令之间的区别在于,如果文档已存在,save将替换整个文档,而upsert将仅更新指定的部分。对于您的用例,save方法可能是更好的匹配。

答案 1 :(得分:1)

如果不存在具有指定ID的实体,则将createIfMissing设置为true将执行插入。如果它确实存在,它将更新现有实体。