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