Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tạo và quản lý sequence (tự động tăng) trong MongoDB với findAndModify

Để tạo sequence tự động tăng trong MongoDB, sử dụng findAndModify() trên collection counter.

Tạo collection demo261 và counter demo262:

> db.demo261.insertOne({_id:100,Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 100 }
> db.demo261.find();

Tạo counter document với sequence_value=0:

> db.demo262.insert({_id:"newId",sequence_value:0})
WriteResult({ "nInserted" : 1 })

Hàm JavaScript getNext() sử dụng findAndModify atomic increment:

> function getNext(sName){
...   var d= db.demo262.findAndModify({
...     query:{_id: sName},
...     update: {$inc:{sequence_value:1}},
...     new:true
...   });
...   return d.sequence_value;
...}

Gọi hàm để sinh _id tự động cho tài liệu mới:

> db.demo261.insert({ "_id":getNext("newId"), "Name":"Chris" })
WriteResult({ "nInserted" : 1 })
> db.demo261.insert({ "_id":getNext("newId"), "Name":"Bob" })
WriteResult({ "nInserted" : 1 })

Kết quả: _id tự động tăng 1, 2 (bên cạnh _id=100 ban đầu):

> db.demo261.find();