加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在与python集成的mongoDB中编写自动操作

发布时间:2020-12-20 13:53:21 所属栏目:Python 来源:网络整理
导读:我创建了收集fee_details. { "_id": "fee_details","name": "Tution fees","student_total": 30,"fee_notpaid": 29,"fee_paid_by": [{ "stu_name": "jaya","date": "10-09-2014" }]} 我尝试使用以下查询输入fee_paid_by详细信息: db.fee_details.findAndMod
我创建了收集fee_details.

{
    "_id": "fee_details","name": "Tution fees","student_total": 30,"fee_notpaid": 29,"fee_paid_by": [{
    "stu_name": "jaya","date": "10-09-2014"
    }]
}

我尝试使用以下查询输入fee_paid_by详细信息:

db.fee_details.findAndModify({
    query: {
    "_id": "fee_details","fee_notpaid": {
        $gt: 0
    }
    },update: {
    $inc: {
        "fee_notpaid": -1
    },$push: {
        "fee_paid_by": {
            "stu_name": "jaya","date": "10-09-2014"
        }
    }
    }
})

它在命令行上执行,并将fee_paid_by细节添加到fee_details集合中.但我尝试在下面执行与python的查询集成

c = db.fee_details.find_and_modify({
    '$query': {
    "_id": "fee_details","fee_notpaid": {
        '$gt': 0
    }
    },'$update': {
    '$inc': {
        "fee_notpaid": -1
    },'$push': {
        "fee_paid_by": {
            "stu_name": s_name,"fee": fee
        }
    }
    }
})

当执行上面的代码时,它给出一个错误,要么必须删除或更新

输入fee_paid_by详细信息到fee_details收集的正确方法是什么?

提前致谢.

解决方法

.find_and_modify采用关键字参数,键名称不应以$sign开头.

>>> import pymongo
>>> client = pymongo.MongoClient()
>>> db = client.test
>>> col = db.collection
>>> name = 'jaya'
>>> fee = 11
>>> query = {'_id': 'free_details','free_notpaid': {'$gt':0}}
>>> update = {'$inc': {'free_notpaid': -1},'$push': {'free_paid_by': {'stu_name': name,'fee': fee}}}
>>> col.find_and_modify(query=query,update=update)

由于pymongo 3.0你应该使用find_one_and_delete(),find_one_and_replace()或find_one_and_update(),因此find_and_modify方法是DEPRECATED

>>> col.find_one_and_update(filter=query,update=update)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读