Mongoengine如何在新年后重置SequenceField?
Mongoengine how to reset SequenceField after new year?
在我的模型中,我有一个 EmbeddedDocument Number,它有一个序列字段(它不是主键),这个字段用作字符串连接部分来生成论文标题(这样字段确实需要顺序,作为业务规则)。
规则是:年开始时,序号要重新开始计数,重新从1开始计数。
例如:
...
12/30/2018 -> sequential_value = 545
12/30/2018 -> sequential_value = 546
12/31/2018 -> sequential_value = 547
01/01/2019 -> sequential_value = 1
01/01/2019 -> sequential_value = 2
...
我的模型:
class Number(EmbeddedDocument):
sequential_value = SequenceField(required=True)
我正在搜索是否有一种方法可以使用参数 value_decorator 来重新启动序列字段,因为它接受可调用,但我没有想到还没出来。
我已经通过改变方法解决了这个问题。
查看 mongoengine 如何处理 SequenceField:
fields.py
counter = collection.find_and_modify(query={'_id': sequence_id},
update={'$inc': {'next': 1}},
new=True,
upsert=True)
我使用相同的方法创建了一个函数,它的功能相同,但使用 2 个 ID 和年份作为查询 ID:
next_number = collection.find_and_modify(
query={'_id': oid+'_'+oeid+'_'+str(year)},
update={'$inc': {'next': 1}},
new=True,
upsert=True)
所以...这样,每次创建一个对象时,我都使用此函数生成下一个序列号,当年份更改时,将创建一个新行,因此序列号将再次从 1 开始。
在我的模型中,我有一个 EmbeddedDocument Number,它有一个序列字段(它不是主键),这个字段用作字符串连接部分来生成论文标题(这样字段确实需要顺序,作为业务规则)。
规则是:年开始时,序号要重新开始计数,重新从1开始计数。
例如:
...
12/30/2018 -> sequential_value = 545
12/30/2018 -> sequential_value = 546
12/31/2018 -> sequential_value = 547
01/01/2019 -> sequential_value = 1
01/01/2019 -> sequential_value = 2
...
我的模型:
class Number(EmbeddedDocument):
sequential_value = SequenceField(required=True)
我正在搜索是否有一种方法可以使用参数 value_decorator 来重新启动序列字段,因为它接受可调用,但我没有想到还没出来。
我已经通过改变方法解决了这个问题。 查看 mongoengine 如何处理 SequenceField:
fields.py
counter = collection.find_and_modify(query={'_id': sequence_id},
update={'$inc': {'next': 1}},
new=True,
upsert=True)
我使用相同的方法创建了一个函数,它的功能相同,但使用 2 个 ID 和年份作为查询 ID:
next_number = collection.find_and_modify(
query={'_id': oid+'_'+oeid+'_'+str(year)},
update={'$inc': {'next': 1}},
new=True,
upsert=True)
所以...这样,每次创建一个对象时,我都使用此函数生成下一个序列号,当年份更改时,将创建一个新行,因此序列号将再次从 1 开始。