gpt4 book ai didi

mongodb - 从 mgo golang 执行 mongodb 函数

转载 作者:IT王子 更新时间:2023-10-29 02:15:02 25 4
gpt4 key购买 nike

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

err := db.C(collectionName).UpdateId(eventID, Event{
Name: eventName,
Club: getClubName(clubID), //how to call mongodb getClubName function?
})

我有一个 mongodb 函数,它在给定俱乐部 ID 时返回俱乐部名称。下面在mo​​ngodb shell中执行OK。

db.loadServerScripts();
db.Event.update({"_id" : "30fc..."}, {"name": "foo_bar" , "clubName": getClubName("4df32...")});

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

最佳答案

根据 this similar question ,在插入期间无法评估 JavaScript。我认为更新、更新等也是如此。

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

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

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

不幸的是,没有办法使用这种技术使事情原子化。如果需要原子性,我会建议将所有业务逻辑保留在您的应用程序中并使用本地或基于数据库的锁定机制。

关于mongodb - 从 mgo golang 执行 mongodb 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35302810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com