Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 遍历子文档_Python_Mongodb - Fatal编程技术网

Python 遍历子文档

Python 遍历子文档,python,mongodb,Python,Mongodb,我有这种类型的JSON文档: { name : 'John', age : 30, counts : [ {day : monday, pay : 75, extra : 33} , {day : tuesday, pay : 69, extra : 12} , {day : sunday, pay : 42, extra : 0} ] } 我希望遍历它们并执行操作。我创建了一个变量“a”,试图迭代: x = [2, 67, 53, 21, 5, ..

我有这种类型的JSON文档:

{ 
  name : 'John',
  age : 30,
  counts : [
    {day : monday, pay : 75, extra : 33} ,
    {day : tuesday, pay : 69, extra : 12} ,
    {day : sunday, pay : 42, extra : 0}  ]
 }
我希望遍历它们并执行操作。我创建了一个变量“a”,试图迭代:

x = [2, 67, 53, 21, 5, ... ... ]

for i in db.docs.find():
    a = 0
    while a <= len(i['counts']):
        ...
        x.append(i['counts'][a]['extra']) 
        ...
        total = ...
        ...
        a = a + 1
        db.docs.update({'id': i['id']}, {'$set':{"counts.a.total":total}})

您可以使用for循环:

for element in i['counts']:
    ...
    x.append(element['extra'])
如果必须使用while循环,请确保索引严格小于长度

while a < len(i['counts']):
而a
它应该已经存在了。如果你遇到了一个错误,你能举个回溯的例子吗?可能您的JSON加载错误。您确定JSON正确吗?看起来您的
计数实际上并不是一个列表。是的,我的错误是,数据库中的文档中确实有comas。for循环工作得很好,但是我不知道如何让我的代码工作:
db.docs.update({'id':i['id']},{'$set':{“element.total”:total})
非常感谢您的帮助
while a < len(i['counts']):