为了账号安全,请及时绑定邮箱和手机立即绑定

在 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 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号