sql >> データベース >  >> NoSQL >> MongoDB

マングース更新サブドキュメント(存在する場合)

    ですから、あなたはそこへの道の一部ですが、もちろん、docが見つからない場合 そうすると、docはなくなります コールバックで動作します。 MongoDBには、これらの種類の更新を処理するネイティブの方法がありますが、もちろん、一致をテストする必要があります そのまま。

    ここでできることは、true内で作業することです。 またはfalse ドキュメントが存在する場所の状態。

    vote.valueを検討する あなたのtrueになる またはfalse 「賛成」の場合

    一致するドキュメントがあることがわかった場合は、次のような更新を発行できます。

    Question.update(
      { 
        _id: questionId, 
        "votes.createdBy" vote.createdBy,
        "votes.up": {"$ne": vote.value }
      },
      { $set: { "votes.$.up": vote.value } }
    );
    

    そのため、positional と一致して使用します。 $ 演算子を使用して、正しいインデックスを確認します 一致するアイテムのが更新されます。そこに追加したのは、vote.vauleがあるドキュメントに触れないようにすることです。 すでに同じ値です。

    そして、誤った状態では、 $push を実行します。 新しいを使用してアレイに追加します アイテム:

    Question.update(
      { 
        _id: questionId
      },
      { 
        $push: { 
          "votes": {
            "up": vote.value,
            "createdBy": vote.createdBy
          }
        }
      }
    );
    

    もちろん、writeConcernにコールバックの詳細を追加します 適用されますが、おそらくそうします。




    1. mongoDBのいくつかのフィールドのインデックス作成

    2. MongoDbの更新時にエラーが発生するのはなぜですか?

    3. mongodbphp-INNERJOINのようなクエリを実行する方法

    4. 辞書<文字列、オブジェクト>からBsonDocumentへの変換(_tフィールドを省略)