我需要在我的应用程序中使用 findAndModify 和 grails 和 mongoDB。
我使用了这段代码:

public static String getNextId(DB db, String seq_name) { 
String sequence_collection = "seq"; // the name of the sequence collection 
String sequence_field = "seq"; // the name of the field which holds the sequence 
 
DBCollection seq = db.getCollection(sequence_collection); // get the collection (this will create it if needed) 
 
// this object represents your "query", its analogous to a WHERE clause in SQL 
DBObject query = new BasicDBObject(); 
query.put("_id", seq_name); // where _id = the input sequence name 
 
// this object represents the "update" or the SET blah=blah in SQL 
DBObject change = new BasicDBObject(sequence_field, 1); 
DBObject update = new BasicDBObject("$inc", change); // the $inc here is a mongodb command for increment 
 
// Atomically updates the sequence field and returns the value for you 
DBObject res = seq.findAndModify(query, new BasicDBObject(), new BasicDBObject(), false, update, true, true); 
return res.get(sequence_field).toString(); 
} 

它工作成功。但是现在我想在没有 native mongodb 对象的情况下使用 findAndModify,并使用 GORM。
这项工作有什么解决方案吗?

请您参考如下方法:

没有 native API 就无法实现这一点,但是您可以像这样编写更紧凑的代码:

def collection = Seq.collection 
collection.findAndModify([_id: seq_name ], [ "\$inc": [seq:1] ]) 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!