MongoDB中的序列

时间:2014-01-19 09:56:50

标签: mongodb

我创建了序列功能。

function getNextSequence(name) {
   var ret = db.counterTest.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
          }
   );
   return ret.seq;
}

但是当我尝试插入记录时给出错误。

db.counterTest.insert(
{
 _id: getNextSequence("userid"),
     name: "TestStudent"
}
)
ReferenceError: getNextSequence is not defined (shell):3

我做错了什么?

由于

3 个答案:

答案 0 :(得分:1)

这只适用于mongo shell。您需要插入第一个序列文档来开始:

db.counterTest.insert({_id: "userid", seq: 0});

之后插入将按预期工作:

db.counterTest.insert({
   _id: getNextSequence("userid"),
   name: "TestStudent"
});

它适用于mongo shell。版本:

> version()
2.4.9

答案 1 :(得分:1)

首先应运行loadServerScripts(),然后才能使用自定义函数。

db.loadServerScripts();
db.counterTest.insert({
  _id: getNextSequence("userid"),
  name: "TestStudent"
})

答案 2 :(得分:0)

使用Robomongo我遇到了同样的问题。我解决了在shell上手动创建函数的问题。

右键单击您的数据库 - >打开Shell。

db.system.js.save({
  _id : "getNextSequence" ,
  value : function (name) {
    var ret = db.counters.findAndModify({
         query: { _id: name },
         update: { $inc: { seq: 1 } },
         new: true
     });
     return ret.seq;
  }
});