使用Python代码中的MongoDB服务器函数作为ID

2024-10-03 00:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些服务器使用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端增量,因为不止一个服务器使用它


Tags: 函数服务器idtruetimemongodbtyperequired
1条回答
网友
1楼 · 发布于 2024-10-03 00:31:37

在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'}

相关问题 更多 >