如何通过类型数据向现有文档Mongodb添加新字段?

时间:2012-04-10 11:18:27

标签: mongodb timestamp

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

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

我想要这个;

{   “_id”:ObjectId(“4f83ed9bcba9560ea474465d”),   “名称” : ””,   “姓” : ””   “日期”:currentTime() }

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

1 个答案:

答案 0 :(得分:4)

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

给出一个集合(为简洁而截断),如下所示:

> 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" }
> 

传递给update函数的false和true值表示upsert = false和multi = true。有关这方面的更多信息可以在update()函数的Mongo文档中找到: 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

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

希望这会让你指向正确的方向。