亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 代碼中使用 MongoDB 服務器函數作為 ID

在 Python 代碼中使用 MongoDB 服務器函數作為 ID

喵喵時光機 2022-05-24 17:10:52
我有一些服務器使用 Python 將數據插入到我的 MongoDB,因為我想從舊的 --> 新的讀取它我想通過增加 ID 中的數量來獲得反饋。我在我的 python 代碼中使用 Mongoengine 來插入,但沒有找到任何關于使用 MongoDB Javascript 函數的信息,例如 mongo 在這里提供自動增量序列函數:https://www.tutorialspoint.com/mongodb/mongodb_autoincrement_sequence。 htm我嘗試使用這樣的類:class LogTemplate(mongoengine.Document):    _id = mongoengine.IntField(required=True)    logid = mongoengine.IntField(required=True)    time = mongoengine.DateTimeField(required=True)    type = mongoengine.IntField(required=True)然后在保存之前:def pushToMongo(evtmgr) -> LogTemplate:    loghand = LogTemplate()    loghand._id = loghand.getNextSequenceValue('collection name')    loghand.logid = evtmgr.id    loghand.type = evtmgr.type    loghand.time = datetime.fromtimestamp(evtmgr.time.seconds)但沒有錯誤,之后沒有任何內容插入數據庫。我正在使用 Mongo 端增量,因為不止一個服務器使用它。
查看完整描述

1 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

不支持在 mongoengine 中運行 mongodb javascript 代碼(除了已棄用且不適合您的用例的 exec_js 之外)。


話雖如此,mongoengine 提供了可以為您的案例解決問題的SequenceField 。它的工作原理相同,將計數器存儲在單獨的集合中


例如:


class Person(Document):

    id = SequenceField(primary_key=True)

    name = StringField()


Person(name='John').save()    # saves {'_id': 1, 'name': 'John'}

Person(name='Bob').save()     # saves {'_id': 2, 'name': 'Bob'}


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號