ですから、あなたはそこへの道の一部ですが、もちろん、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
にコールバックの詳細を追加します 適用されますが、おそらくそうします。