查找/编辑嵌套json中的所有匹配项?

查找/编辑嵌套json中的所有匹配项?,json,mongodb,meteor,Json,Mongodb,Meteor,我有一个类似这样的json [ { team: 'Hello', members: ['John', 'Paul'], points: 0; }, { team: 'Bye', members: ['John', 'Mary'], points: 0; } ] 我如何搜索所有球队,找到任何一支有一个叫“John”的队员的球队,并为每支比赛的球队加10分 实际上这是一个Mongo集合,我正在使用var teams=teams.fin

我有一个类似这样的json

[
  {
    team: 'Hello',
    members: ['John', 'Paul'],
    points: 0;
  },
  {
    team: 'Bye',
    members: ['John', 'Mary'],
    points: 0;
  }
]
我如何搜索所有球队,找到任何一支有一个叫“John”的队员的球队,并为每支比赛的球队加10分


实际上这是一个Mongo集合,我正在使用
var teams=teams.find().fetch()
将其转换为json,我甚至不应该这样做,并尝试在集合级别进行匹配,以便编辑它吗?

如果要在服务器上运行更新操作,可以使用运算符查找指定值与数组元素匹配的文档

服务器:

if (Meteor.isServer) {
    Teams.update({
        "members": {
            $in: ["John"]
        }
    }, {
        $inc: {
            points: 10
        }
    }, {
        multi: true
    });
}
if (Meteor.isClient) {
    Teams.find({
        "members": {
            $in: ["John"]
        }
    }).forEach(function(doc) {
        Teams.update({
            _id: doc._id
        }, {
            $inc: {
                points: 10
            }
        });
    });
}
如果要在客户端上运行此操作,只能使用
\u id
字段更新文档,否则将收到以下错误:

错误:不允许。不受信任的代码只能按ID更新文档。 [403]

因此,您需要运行该方法,然后更新所有匹配的文档

客户端:

if (Meteor.isServer) {
    Teams.update({
        "members": {
            $in: ["John"]
        }
    }, {
        $inc: {
            points: 10
        }
    }, {
        multi: true
    });
}
if (Meteor.isClient) {
    Teams.find({
        "members": {
            $in: ["John"]
        }
    }).forEach(function(doc) {
        Teams.update({
            _id: doc._id
        }, {
            $inc: {
                points: 10
            }
        });
    });
}

这是一个相当基本的mongo问题,有大量在线帮助。到目前为止,您尝试了什么?我已经尝试在循环中循环以找到正确的团队成员,但现在我在尝试更新它时遇到了问题<代码>Teams.update(myTeam,{$inc:{'members.o.1':Number(score)})其中o应为添加的动态数字。