私はそこにショートカットがないと感じていますが、まだチェックしたいと思っています。 (費用の合計) - クエリを挿入クエリと組み合わせる
は、私はこの[{
userName: "Mr. A"
income: 100
expense: null
finalBalance: 200
timestamp: Date.now()
}]
*私たちは、所得額がある場合は、費用はnullになりますし、=(収入の合計)、その逆 最終的なバランスのように見えるのコレクションを持っていると言いますスタック:mongodB + node.js
基本的に、新しい「finalBalance」を毎回計算することを含む、新しいオブジェクトをコレクションに挿入するための最短かつ最良の方法を知る必要があります。
私がやっていることは、上に示すような新しいトランザクションを挿入する必要があるたびにです。 "timestamp"と "userName"を使用してそのユーザーの最後のトランザクションを取り出し、そこから収入または費用を加算または減算し、 新しいオブジェクトを作成して挿入します。例えば
:
ユーザーの最後のトランザクション:
{
userName: "Mr. A"
income: 100
expense: null
finalBalance: 200
timestamp: Date.now()
}
は詳細
({userName: "Mr. A", expense: 10})
ステップ1とユーザーの新しいトランザクションを挿入する必要があります。最後のフェッチ(DBから取得します)最後の "finalBalance"を得るために、DBからのユーザのトランザクション。
ステップ2:れる新しい "finalBalance" を取得する "finalBalance" から "費用" 量をsubstract(200から10 = 190)
ステップ3:(DBの挿入)は
インサートメイク{
userName: "Mr. A"
income: null
expense: 10
finalBalance: 190
timestamp: Date.now()
}
新しい「finalBalance」を計算し、1回のDB呼び出しで新しいオブジェクトを挿入する方法はありますか?
ソリューションは、あなたがそれを更新するために、独自の文書の値を使用することはできませんmongo.js
こんにちは、私はこれを試していただきありがとうございます。しかし、これは私の場合は機能しません。私は完全なもののための単一のクエリが必要なので、質問には言及されていませんが、私は配列やそのようなトランザクションが挿入されるように、そのクエリを使用して多くを挿入します。しかし、ええ、あなたの提案を使用することができますクエリのような種類の書き込みができない場合はええ。 –