Skip to content

Instantly share code, notes, and snippets.

@tos-kamiya
Last active September 12, 2017 06:35
Show Gist options
  • Save tos-kamiya/8034988 to your computer and use it in GitHub Desktop.
Save tos-kamiya/8034988 to your computer and use it in GitHub Desktop.
generate serial number in mongodb
>>> import pymongo
>>>
>>> db = pymongo.Connection('localhost', 27017).somedb # specify "somedb" db
>>> db.serialnum.insert({"student_id": "kamiya", "seq": 0}) # add seed entry for a student "kamiya" in "serialnum" table
>>> db.serialnum.find_and_modify({"student_id": "kamiya"}, update={"$inc": {"seq": 1}}, new=True)["seq"] # generate a serial number for "kamiya"
>>> db.serialnum.find_and_modify({"student_id": "kamiya"}, update={"$inc": {"seq": 1}}, new=True)["seq"] # generate another serial number for "kamiya"
make a function for the above operation...
>>> def init_serial_number(student_id, db):
>>> db.serialnum.insert({"student_id": student_id, "seq": 0})
>>>
>>> def gen_serial_number(student_id, db):
>>> return db.serialnum.find_and_modify({"student_id": student_id}, update={"$inc": {"seq": 1}}, new=True)["seq"]
now you can write as follows:
>>> db = pymongo.Connection('localhost', 27017).somedb # specify "somedb" db
>>> init_serial_number("kamiya", db)
>>> gen_serial_number("kamiya", db)
>>> gen_serial_number("kamiya", db)
>>> init_serial_number("umemoto", db) # make an entry for another student
>>> gen_serial_number("umemoto", db)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment