首页 文章

MongoDB:更新一个字段上的每个文档

提问于
浏览
157

假设有一个名为_484453的收集 .

foo 的每个实例都有一个名为lastLookedAt的字段,它是一个自epoch以来的UNIX时间戳 . 我希望能够通过MongoDB客户端并将所有现有文档(大约20,000个)的时间戳设置为当前时间戳 .

处理这个问题的最佳方法是什么?

3 回答

  • 3

    在Mongo shell中,或与任何Mongodb客户端:

    • For Mongodb >= 3.2:

    db.foo.updateMany({}, {$set: {lastLookedAt: Date.now() / 1000}})

    http://docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents

    • {} 是条件(空条件匹配任何文档)

    • {$set: {lastLookedAt: Date.now() / 1000}} 就是你想要做的

    • For Mongodb >= 2.2:

    db.foo.update({}, {$set: {lastLookedAt: Date.now() / 1000}}, { multi: true })

    http://docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents

    • {} 是条件(空条件匹配任何文档)

    • {$set: {lastLookedAt: Date.now() / 1000}} 就是你想要做的

    • {multi: true} 是"update multiple documents"选项

    • For Mongodb < 2.2:

    db.foo.update({}, {$set: {lastLookedAt: Date.now() / 1000}}, false, true)

    https://web.archive.org/web/20120613233453/http://www.mongodb.org/display/DOCS/Updating

    • {} 是条件(空条件匹配任何文档)

    • {$set: {lastLookedAt: Date.now() / 1000}} 就是你想要做的

    • false 用于"upsert"参数(如果不存在则插入,否则更新 - 不是您想要的)

    • true 用于"multi"参数(更新多个记录)

  • 7

    我已经使用MongoDB .NET驱动程序一个多月了 . 如果我使用.NET驱动程序,我会在集合对象上使用Update方法 . 首先,我将构建一个查询,它将获取我感兴趣的所有文档,并对我想要更改的字段执行更新 . Mongo中的更新仅影响第一个文档,并且更新由查询产生的所有文档,需要使用“多个”更新标记 . 示例代码如下......

    var collection = db.GetCollection("Foo");
    var query = Query.GTE("No", 1); // need to construct in such a way that it will give all 20K //docs.
    var update = Update.Set("timestamp", datetime.UtcNow);
    collection.Update(query, update, UpdateFlags.Multi);
    
  • 348

    此代码对您有所帮助

    Model.update({
                'type': "newuser"
            }, {
                $set: {
                    email: "abc@gmail.com",
                    phoneNumber:"0123456789"
                }
            }, {
                multi: true
            },
            function(err, result) {
                console.log(result);
                console.log(err);
            })
    

相关问题