我有一些服務器使用 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'}
添加回答
舉報
0/150
提交
取消