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

如何在与python集成的mongoDB中编写自动操作,mongodb,python-2.7,python-3.x,pymongo,Mongodb,Python 2.7,Python 3.x,Pymongo,我创建了收费详细信息 { "_id": "fee_details", "name": "Tution fees", "student_total": 30, "fee_notpaid": 29, "fee_paid_by": [{ "stu_name": "jaya", "date": "10-09-2014" }] } 我尝试使用以下查询输入由支付的费用详情: db.fee_details.findAndModify({

我创建了收费详细信息

{
    "_id": "fee_details",
    "name": "Tution fees",
    "student_total": 30,
    "fee_notpaid": 29,
    "fee_paid_by": [{
    "stu_name": "jaya",
    "date": "10-09-2014"
    }]
}
我尝试使用以下查询输入由支付的费用详情:

 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"
        }
    }
    }
})
它在命令行上执行,并将由详细信息支付的费用添加到费用详细信息集合中。但我尝试了与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
        }
    }
    }
})
执行上述代码时,会出现错误
,必须删除或更新

将由
支付的费用详情输入到
费用详情收款中的正确方法是什么

提前感谢。

采用关键字参数,关键字名称不应以
$
符号开头

>>> 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)

find\u and\u modify
方法是不推荐的,因为您应该使用pymongo 3.0,或者相反

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