从mgo golang执行mongodb函数

时间:2016-02-09 21:46:05

标签: mongodb go mgo

使用结构对象时,是否可以使用mgo驱动程序在更新或插入期间执行mongodb函数?

companies/:company_id/users

我有一个mongodb函数,在给出俱乐部ID时会返回一个俱乐部名称。以下在mongodb shell中执行OK。

maven-assembly-plugin

我可以执行额外的数据库查找来获取俱乐部名称,但如果可能的话,我希望这是原子的。

1 个答案:

答案 0 :(得分:1)

Per this similar question,在插入过程中无法评估JavaScript。我认为这是一个安全的假设,同样适用于更新,upserts等。

您可以使用mgo的db.Run()方法在两次调用中实现此目的:

db.Run(bson.M{"eval": fmt.Sprintf("getClubName(%s);", clubID)}, &resp)

然后在更新语句中使用结果。

不幸的是,使用这种技术无法使原子成为原子。如果要求原子性,我建议保留应用程序中的所有业务逻辑,并使用本地或基于数据库的锁定机制。