ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-10-06 07:58:02  阅读:232  来源: 互联网

标签:python mongodb pymongo


我正在使用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,mongodb,pymongo
来源: https://codeday.me/bug/20191006/1859307.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有