mongodb コレクション 'users' の特定のフィールドを更新しようとしています
ドキュメントの例:
{
_id: ObjectId("536d4d3307221f847fbbea49"),
groups: [
{
match_id: "dc3acf1b",
groupName: "World Cup, Group A",
score:[0,1]
},
{
match_id: "d4f14940",
groupName: "World Cup, Group A",
score:[2,1]
}],
name:"Foo Bar",
points:10
}
特定のスコアを持つスコアフィールドのみを更新しようとしています..
ここに私が欲しいものがあります(位置演算子):
db.users.update({'groups.match_id':i_match , 'groups.score':i_score},
{$inc:{points:1}});
これで、両方のフィールドを持つユーザーが検索されると思いますが、クエリの最初の部分を持つ同じグループ オブジェクトを検索したいと考えています。
次のように:
db.users.update({'groups.match_id':d4f14940 , 'groups.score':[2,1]},
{$inc:{points:1}});
ユーザーに+1ポイントを与える必要があります
しかし:
db.users.update({'groups.match_id':dc3acf1b , 'groups.score':[2,1]},
{$inc:{points:1}});
いけない
あなたは私のドリフトを取得します:)
これで、位置演算子から「$」記号を使用する必要があることがわかりましたが、それは update() の 2 番目のパラメーターでのみ使用できると思います-更新部分..検索部分ではありません
注- この方法 (配列) でのスコアの実際の比較は機能しない可能性があります..しかし、それはここでは問題ではありません