0

我对 Python 很陌生。在我的脚本中,我编写了更新 MongoDB 数据库的代码。

def mongoInsert(userData, collection):
    mconn = Connection(MONGODB_HOST,MONGODB_PORT)
    mdb = mconn[MONGODB_DBNAME]
    col = mdb[collection]

    #The below codeis used to upsert the data in MongoDB.
    for user in userData:
        print user
        col.update({'id': user[0]}, {'$set':user}, True)
return

其中 userData 是一个列表,

 userData = []

当我使用 putty运行命令python script_name.py时;该脚本运行没有任何错误或异常。但是当我看到尝试查看MongoDB中的数据时,数据库中没有添加数据(我不确定,可能已经添加了数据,但是由于我是新来的,所以我看不到它) . 所以我现在在想,如果有任何方法可以在更新命令之后更新数据库中的行(更新命令的任何返回类型,例如布尔值或整数),我会像使用它一样使用它

success = col.update({'id': user[0]}, {'$set':user}, True)
print success

但它总是打印 None 成功的值。那么有没有办法检查数据是否添加,修改上面的代码。

4

1 回答 1

1

我想用这条线

col.update({'id': user[0]}, {'$set': user}, True)

其中 user[0] 是用户集合的整个文档,您正在尝试更新 id 是整个文档的文档。你应该这样写:

col.update({'_id': user[0]['_id']}, {'$set': user}, True)

此外,我不明白你想用这部分做什么 {'$set': user}。阅读这个这个

要检查您的查询是否正常,您应该将关键字参数传递safe=True给更新方法:

success = col.update({'id': user[0]}, {'$set': user}, True, safe=True)
print success

抱歉,如果我没有正确理解您的问题。

于 2012-11-26T10:36:07.670 回答