查找/编辑嵌套json中的所有匹配项?
我有一个类似这样的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
[
{
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应为添加的动态数字。