我目前在通过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个序列号。
答案 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}})
我希望它适合你。感谢