插入在从MongoDB的文档以下链接: https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/MongoDB的功能澄清同步,支持自动增量
有关于如何建立一个“安全”的解释,支持自动增量_id
插入。 我的问题是:
- 我应该在哪里定义函数?
- 我以后怎么称呼它?
我无法退出理解,如果函数存储为一个JS函数是一个JS文件?或者它存储在数据库中?或者是其他东西。
谢谢。
下面是实际的功能,因为它是在上面的链接带来的:
function insertDocument(doc, targetCollection) {
while (1) {
var cursor = targetCollection.find({}, { _id: 1 }).sort({ _id: -1 }).limit(1);
var seq = cursor.hasNext() ? cursor.next()._id + 1 : 1;
doc._id = seq;
var results = targetCollection.insert(doc);
if(results.hasWriteError()) {
if(results.writeError.code == 11000 /* dup key */)
continue;
else
print("unexpected error inserting data: " + tojson(results));
}
break;
}
}
其实这仅仅是[“乐观循环”(https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing -field /#auto-increment-optimistic-loop)示例实现。没有任何代码与JavaScript实现“绑定”。你需要阅读的核心部分是关于['.findAndModify()'](https://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/)方法以及它是如何在那里的例子中实现,是一个值递增,然后返回用作“自动递增键”。 –
核心驱动程序方法(以及实现示例)适用于所有语言。所以这只是一个原则。通过增加当前值来更新并返回存储在另一个集合中的值,然后使用返回的值作为“递增键”。 –
你能解释一下我如何在我的数据库中使用乐观循环实现?步骤是什么?我的意思是,如果我希望每个插入的文档在某个/所有集合中都有一个自动增量_id,但我需要它也是安全的。 – TBE