Mongo文档增量序列正在跳过数字

时间:2016-10-24 21:35:50

标签: mongodb meteor methods sequence auto-increment

我目前在通过Meteor查询数据库中的某个文档时遇到问题。

使用这行代码我试图从DB中检索下一个序列号。但它有时会因某种原因随机跳过数字。

var col = MyCounters.findOne(type);
MyCounters.update(col._id, {$inc: {seq: 1}});
return col.seq;

服务器端没有出现任何错误。 有人知道这个问题是什么吗?

我在Meteor 1.4 +上

====================

更新

我还使用从MyCounters集合中获取的新值更新另一个Collection,所以它会是这样的:

var col = MyCounters.findOne(type);
MyCounters.update(col._id, {$inc: {seq: 1}});
var barId = col.seq;

// declare barObject + onInsertError
barObject.barId = barId;
// ...
FooCollection.insert(barObject, onInsertError);

FooCollection有时会跳过最多5000个序列号。

1 个答案:

答案 0 :(得分:0)

如果您希望增加该项目的文档,您可以使用:

var col = MyCounters.findOne(type);
var valueOne = 1;
var nameItem = 'seq';
var inc = {};
inc[ nameItem ] = valueOne;
MyCounters.update({ _id: col._id }, { '$inc': inc } )

但是如果你想从收集MyCounters(maks seq + 1)的所有文件中获得增值,你可以使用:

var count = MyCounters.findOne({}, {sort:{seq:-1}}).seq;
count = count + 1;
MyCounters.update({_id:col._id}, {$set:{seq:count}})

我希望它适合你。感谢

请参阅:https://stackoverflow.com/a/33968766/4287229