鍍金池/ 問答/數(shù)據(jù)庫/ mongodb 如何在插入新數(shù)據(jù)時(shí),實(shí)現(xiàn)某個(gè)字段的自增?

mongodb 如何在插入新數(shù)據(jù)時(shí),實(shí)現(xiàn)某個(gè)字段的自增?

像mysql我記得在新數(shù)據(jù)插入時(shí)可以自動(dòng)實(shí)現(xiàn)id的自增,
mongodb可以實(shí)現(xiàn)嗎? 如果可以的話 需要在表設(shè)置時(shí)如何設(shè)置?

原因:
有個(gè)定時(shí)任務(wù)表,有beginTime, endTime, area三個(gè)字段,
在node服務(wù)啟動(dòng)時(shí),我先去數(shù)據(jù)庫里查詢該表所有數(shù)據(jù),然后一一設(shè)置定時(shí)任務(wù),

但是當(dāng) 定時(shí)任務(wù)被別人在網(wǎng)頁上人為取消(數(shù)據(jù)庫中該條數(shù)據(jù)刪除),我需要在刪除的同時(shí)clear掉該任務(wù),
所以想到增加一個(gè)字段name之類的字段,代表他的變量名,到時(shí)候刪除的時(shí)候,調(diào)用 eval(name).clear().

撤了那么多。

問題:

  1. mongodb 是否可以實(shí)現(xiàn) 在新增數(shù)據(jù)時(shí),實(shí)現(xiàn)某個(gè)字段的自增?
  2. 還有沒有其他的方式可以實(shí)現(xiàn)我要的定時(shí)任務(wù)?
回答
編輯回答
夢一場

一般地,mongodb會(huì)自動(dòng)插入一個(gè)唯一的_id字段作為pk

如果真的要自增,可以參考 https://docs.mongodb.com/v3.0...

簡單來講,就是:

  1. 建立一個(gè)自增計(jì)數(shù)器
  2. 創(chuàng)建一個(gè)函數(shù),使用findAndModify更新計(jì)數(shù)器(在update時(shí)用$inc進(jìn)行自增)
  3. 插入記錄時(shí),使用該函數(shù)獲得自增的ID

至于你說的定時(shí)任務(wù),抱歉我沒看懂

2018年1月14日 20:13
編輯回答
孤客

新建個(gè)集合來保存id,每次新增數(shù)據(jù)$inc下。

你這個(gè)需求我覺得直接查找mongo自動(dòng)生成的ObjectId也可以

2018年3月16日 06:11