我创建了序列功能。
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
我做错了什么?
由于
答案 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;
}
});