0

我正在将 MongoDB 与 Node.js 一起使用,并且陷入了特定场景。

假设我有一个名为的文档存储samples,我用它来从客户端机器收集一些时间戳。

我想介绍批处理的概念

更准确地说,我想继续插入现有文档,直到样本数量达到阈值,之后我想创建一个新文档。

我可以继续将样本数量插入和更新到同一文档,如下所示

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

一旦我的样本数达到此示例的 300,如何添加检查以停止插入并创建新文档?

谢谢

4

1 回答 1

1

我不确定您是否可以在没有两个查询的情况下执行此操作,但您可以尝试

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 回答