插入在從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