python – 如何在Pymongo的每个插入中自动增加id?

我正在使用pymongo在mongodb中插入文档.
这是router.py文件的代码

    temp = db.admin_collection.find().sort( [("_id", -1)] ).limit(1)
    for doc in temp:
        admin_id = str(int(doc['_id']) + 1)


    admin_doc ={
    '_id'       :   admin_id,
    'question'  :   ques,
    'answer'    :   ans,
    }
    collection.insert(admin_doc)

我应该怎么做,以便在每个插入_id增加1.

解决方法:

这似乎不是一个好主意,但如果您真的想要使用它,您可以尝试如下设置.

它应该在单个服务器的低流量应用程序中运行良好,但我不会尝试使用复制或分片环境或者执行大量插入操作.

创建单独的集合来处理id seqs:

db.seqs.insert({
    'collection' : 'admin_collection',
    'id' : 0
})

每当您需要插入新文档时,请使用类似于此的内容:

def insert_doc(doc):
    doc['_id'] = str(db.seqs.find_and_modify(
        query={ 'collection' : 'admin_collection' },
        update={'$inc': {'id': 1}},
        fields={'id': 1, '_id': 0},
        new=True 
    ).get('id'))

    try:
        db.admin_collection.insert(doc)

    except pymongo.errors.DuplicateKeyError as e:
        insert_doc(doc)
上一篇:python-将$cond语句与$project一起使用并在PyMongo中聚合


下一篇:python – 清理MongoDB的输入