0

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 番目のパラメーターでのみ使用できると思います-更新部分..検索部分ではありません

- この方法 (配列) でのスコアの実際の比較は機能しない可能性があります..しかし、それはここでは問題ではありません

4

1 に答える 1