在 Python 代码中使用 MongoDB 服务器函数作为 ID
Use MongoDB server function in Python code as ID
我有一些服务器使用 Python 将数据插入我的 Mongo 数据库,因为我想从旧的读取它 --> 新的 我想通过增加 ID 中的数字来获得反馈。
我在 python 代码中使用 Mongoengine 来插入,但没有找到任何关于使用 MongoDB Javascript 函数的信息,例如 mongo 这里提供自增序列功能:https://www.tutorialspoint.com/mongodb/mongodb_autoincrement_sequence.htm
我尝试这样使用 class:
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 端增量,因为不止一台服务器在使用它。
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'}
我有一些服务器使用 Python 将数据插入我的 Mongo 数据库,因为我想从旧的读取它 --> 新的 我想通过增加 ID 中的数字来获得反馈。
我在 python 代码中使用 Mongoengine 来插入,但没有找到任何关于使用 MongoDB Javascript 函数的信息,例如 mongo 这里提供自增序列功能:https://www.tutorialspoint.com/mongodb/mongodb_autoincrement_sequence.htm
我尝试这样使用 class:
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 端增量,因为不止一台服务器在使用它。
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'}