0

Node.js で MongoDB を使用していますが、特定のシナリオで立ち往生しています。

samplesクライアント マシンからいくつかのタイム スタンプを収集するために使用するというドキュメント ストアがあるとします。

バッチの概念を導入したい

より正確には、サンプル数がしきい値に達するまで既存のドキュメントに挿入し続け、その後、新しいドキュメントを作成したいと考えています。

次のように、サンプルの数を同じドキュメントに挿入して更新し続けることができます

db.timestamps.update(
        {"guid": guid},
        {
            $inc: { samples: 1},
            $push: { timings: { clientTime: clientTime } }
        },
        { upsert: true }
    );

この例では、サンプル数が 300 に達したら、挿入を停止して新しいドキュメントを作成するチェックを追加するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

2 つのクエリなしでこれを実行できるかどうかはわかりませんが、試すことができます

db.col.update({
    guid:guid, samples: {$lt:300}
},
{
    $inc: { samples: 1},
    $push: { timings: { clientTime: clientTime } }
},
{
    upsert: true
})

これにより、次の形式の 300 バッチごとに新しいドキュメントが挿入されます。

{ "_id" : ObjectId("51e518ad8d065caa3b208661"), "guid" : 10, "samples" : 1, "timings" : [  {  "clientTime" : 1 } ] }
于 2013-07-16T08:43:35.377 に答える