使用结构对象时,是否可以使用mgo驱动程序在更新或插入期间执行mongodb函数?
companies/:company_id/users
我有一个mongodb函数,在给出俱乐部ID时会返回一个俱乐部名称。以下在mongodb shell中执行OK。
maven-assembly-plugin
我可以执行额外的数据库查找来获取俱乐部名称,但如果可能的话,我希望这是原子的。
答案 0 :(得分:1)
Per this similar question,在插入过程中无法评估JavaScript。我认为这是一个安全的假设,同样适用于更新,upserts等。
您可以使用mgo的db.Run()方法在两次调用中实现此目的:
db.Run(bson.M{"eval": fmt.Sprintf("getClubName(%s);", clubID)}, &resp)
然后在更新语句中使用结果。
不幸的是,使用这种技术无法使原子成为原子。如果要求原子性,我建议保留应用程序中的所有业务逻辑,并使用本地或基于数据库的锁定机制。