Pymongo比Mongo Shell更新不同

时间:2013-10-25 17:29:18

标签: python mongodb pymongo

在使用Pymongo进行更新时,如果我将相同的查询放入shell中,我得到的结果(或错误)db=blog

在shell中,这有效:

db.posts.update(
    {'permalink': 'TLxrBfyxTZjqOKqxgnUP'},
    {'$inc': {'comments.0.num_likes':1}});

在Pymongo self.posts = blog.posts,以下不起作用

self.posts.update({'permalink': 'TLxrBfyxTZjqOKqxgnUP'},
      {'$inc': {'comments.0.num_likes':1}})

我也在传单上试过comments.[0].num_likes ......

日志中没有报告错误,并且此更新返回1作为触摸的文档数,这是正确的,该数据未被更改。

其他非索引更新在两者中都有效。

我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

请记住,shell中的blog.posts是字符串,但在python中是一个变量。

尝试:

from pymongo import MongoClient
con = MongoClient("mongodb://user:pass@127.0.0.1:"+port+"/blog")
db=con['blog']
db['posts'].update({'permalink': 'TLxrBfyxTZjqOKqxgnUP'},
                   {'$inc': {'comments.0.num_likes':1}})