首页 > 解决方案 > 如何在 mongo-go-driver 中使用 js 函数

问题描述

目标是在某些集合中实现计数器字段(一种自动增量)。我可以通过 mongoshell 保存这个函数:

> db.system.js.save({
 _id: "getValueForNextSequence",
 value : function(fieldName){
    var sequenceDoc = db.counters.find({sequenceName: fieldName }).toArray()[0];
  if (sequenceDoc.sequence > 9998){
     sequenceDoc =  db.counters.findAndModify({
      query:{sequenceName: fieldName },
      update: {$set:{sequence:1000}},
      new:true
    });
  }else {
    sequenceDoc =  db.counters.findAndModify({
      query:{sequenceName: fieldName },
      update: {$inc:{sequence:1}},
      new:true
    });
  }
  return sequenceDoc.sequence;
}
})

我有counters收集存储数据的地方getValueForNextSequence

{fieldName: "shotID" , sequence : 0 }

然后调用它(再次从外壳):

 db.loadServerScripts()

> db.STORE.insert({
... "shortID":getValueForNextSequence("shortID"),
... "item_short_name": "DEF",
... "specification": "book",
... "category": "fictional",
... "seller": "best_buy",
... "network": "XYZ",
... "plan": "regular"
... })
WriteResult({ "nInserted" : 1 })

但我不明白我怎么能对官方的 go-mongo-driver 做同样的事情。

标签: javascriptmongodbgo

解决方案


推荐阅读