【问题标题】:How to add new filed by type data to existing documents Mongodb?如何按类型数据向现有文档 Mongodb 添加新字段?
【发布时间】:2012-04-22 16:23:20
【问题描述】:

我正在尝试添加字段(键)现有文档的所有记录。我想;保存新记录时,自动将该字段保存到当前日期;

现在我的一个 studen 文档实例 { “_id”:ObjectId(“4f83ed9bcba9560ea474465d”), “姓名” : ””, “姓” : ””, “数字” : ””, ...... }

我想要这个;

{ “_id”:ObjectId(“4f83ed9bcba9560ea474465d”), “姓名” : ””, “姓” : ”” “日期”:当前时间() }

当新记录保存到文档时,自动将当前时间保存到文档中。 我不想从客户端这样做,

【问题讨论】:

    标签: mongodb timestamp


    【解决方案1】:

    为了确保我理解正确,您是希望使用新的“日期”字段更新集合中的每个文档,还是只是希望在插入新文档时将当前日期添加到新文档中?

    给定一个集合(为简洁起见),如下所示:

    > db.students.find()
    { "_id" : 1, "name" : "Joe" }
    { "_id" : 2, "name" : "Jane" }
    { "_id" : 3, "name" : "Sam" }
    > 
    

    可以在单个更新语句中将日期添加到集合中的每个文档,如下所示:

    > db.students.update({}, {$set:{"Date": new Date()}}, false, true)
    > db.students.find()
    { "Date" : ISODate("2012-04-10T15:06:34.608Z"), "_id" : 1, "name" : "Joe" }
    { "Date" : ISODate("2012-04-10T15:06:34.608Z"), "_id" : 2, "name" : "Jane" }
    { "Date" : ISODate("2012-04-10T15:06:34.608Z"), "_id" : 3, "name" : "Sam" }
    > 
    

    传递给更新函数的 false 和 true 值表示 upsert=false 和 multi=true。更多信息可以在 Mongo 文档中的 update() 函数中找到: http://www.mongodb.org/display/DOCS/Updating#Updating-update%28%29

    要在将新文档添加到集合时将新的 Date 对象添加到新文档,只需在保存文档时创建一个新的 Date 对象:

    > db.students.save({ "_id" : 4, "name" : "Chris", "Date":new Date()})
    > db.students.find()
    { "Date" : ISODate("2012-04-10T15:06:34.608Z"), "_id" : 1, "name" : "Joe" }
    { "Date" : ISODate("2012-04-10T15:06:34.608Z"), "_id" : 2, "name" : "Jane" }
    { "Date" : ISODate("2012-04-10T15:06:34.608Z"), "_id" : 3, "name" : "Sam" }
    { "_id" : 4, "name" : "Chris", "Date" : ISODate("2012-04-10T15:12:03.161Z") }
    >
    

    当在 Java Script 中创建 Date 对象时,如果没有将任何值传递给构造函数,它将创建一个具有当前 UTC(通用或 GMT)时间的日期对象。关于 Java Script Date 对象的更多信息可以在这里找到: http://www.w3schools.com/jsref/jsref_obj_date.asp

    不同的语言处理日期的方式不同,因此根据您的应用程序编写的语言,您必须查看该语言的文档以了解它如何实现日期对象。

    希望这能让您找到正确的方向。

    【讨论】:

    • 感谢您的回答。我是 MongoDb 的新手。我想要这个,我想要这个,> db.students.save({ "_id" : 4, "name" : "Chris"}) > db.students.find() { "Date" : ISODate("2012 -04-11T09:56:34.608Z"), "_id" : 1, "name" : "Joe" } 它看起来像每条新记录的触发器或默认当前日期
    • 啊。我觉得我明白了。 “_id”是 Mongo 将自动添加到新文档中的唯一字段。如果您希望将“日期”字段添加到新文档中,则必须通过应用程序完成。
    • 是的,我明白了。非常感谢马克
    猜你喜欢
    • 2023-02-14
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2020-07-04
    • 1970-01-01
    相关资源
    最近更新 更多