我是MongoDB的新手。 我正在使用Morphia从Java访问它。 我需要做一些事情:

public boolean isUnique(short s){
//操作1:如果存在具有字段“id”= s的对象,则检入mongo
//如果是,返回false
//其他,
//操作2:在数据库中创建此对象
//并返回true
}

我要掌握的问题不是实际的语法,而是原子性的问题。 我如何确保只有一个线程/进程可以访问该文档,以便OP1和OP2是原子的? 我认为这必须在数据库级别进行管理,因为Java服务器位于集群环境中。

此致,安德斯

#1楼 票数:1 已采纳

您可以使用{id:s}文档的一次upsert替换这两个操作,如果文档已经存在则该文档变为无操作,但如果不存在则替换为插入。 调用getLastError命令(驱动程序可以为您执行此操作)将告诉您是否创建了新文档。

#2楼 票数:1

我正在使用Java和Morphia所以这里是实际代码的样子,如果有人想要在未来实现同样的事情。 这是true在调用updateFirst告诉蒙戈,这是一个UPSERT:

public boolean checkIfExistsAndInsertOtherwise(short id){
    Datastore datastore = getDatastore();
    Query<OrganizationId> updateQuery = datastore.createQuery(OrganizationId.class).field("identificationNumber").equal(id);

    //Bogus operation, just set id to itself
    UpdateOperations<OrganizationId> ops = datastore.createUpdateOperations(OrganizationId.class).set("identificationNumber", id);

    UpdateResults<OrganizationId> result = datastore.updateFirst(updateQuery, ops, true,WriteConcern.SAFE);

    return result.getInsertedCount() == 0;
  }

  ask by AndersG translate from so

未解决问题?本站智能推荐:

1回复

如何在Morphia / MongoDB Java中创建复合唯一索引?

假设我有一个MongoDB实体,如下所示: 我想添加一个索引,使得对manufacturer,model,year是独一无二的。 当我尝试以下注释 - @Indexes(@Index(value="manufacturer,model,year, unique=true)) - 它
1回复

在MongoDB / Morphia中查询特定的子文档

我有一个存储在MongoDB中的文档,看起来像这样: 我正在使用Morphia将其建模为Java对象。 我想做的是查询myProps中propA值为'ValueA' 。 这可能吗? 是否可以查询子文档中的特定值? 我试过使用类似的查询: ...但是,我仍然看到返回了myP
2回复

[JAVA]:如何在MongoDB中插入和检索动态JSON

我正在后端使用MongoDB开发JAX-RS Web服务。 我正在将Morphia用于从类到Mongo集合的映射。 在插入操作之一中,我们在JSON中包含一个Json。 在这种情况下,键为“数据”的JSON是动态的。 可以是任何东西。 如何在集合中插入动态JSON? 由于它
2回复

morphia将字段名称“ ClassName”插入到mongodb中

我对mongodb和morphia相当陌生,在开始使用它之后,我意识到mongodb文档中还有一个额外的部分,该记录包含一个文件名“ ClassName”,该名称具有morphia映射的类的值。 这正常吗? 我觉得这违反了数据库中数据的完整性,是否有解决方法?
1回复

Mongodb吗啡复杂查询

我想用Monphi DB的Morphia驱动程序在Java中执行此查询,这是我在mongo shell中的工作方式(和工作方式) db.prova.find({“ username”:“ prova”,“ roles”:“ user”})
1回复

使用morphia数据存储区在mongodb中查询和更新

我的课程如下: 其中,MoDBChannel类是: 和MoDBTopic类是: 和MoDBIA_DAO类: 我有一个MoDBIAGlobals类的对象保存为: 其中全局变量的JSON如下: 全局的JSON"> 现在我想查询以获取类MoDBIAGlo
1回复

MongoDB-如何在单个查询中查询多个集合的详细信息

我有一种情况,我必须从多个/不同的集合中获取数据并比较文档,然后返回结果。 目前,我正在应用程序端使用多个顺序查询来获取这些集合的数据,但这速度较慢。 我想在一个查询中做到这一点。 有可能吗 Basically i'm looking for a sql's stored proced
1回复

使用 Morphia 查询 mongodb

我需要查询 MongoDB,我正在使用 Morphia 来做到这一点。 我需要做这样的事情 我试过这个,但没有用。 另外,下面是上面的 Mongodb 查询 接下来我可以尝试什么?