我正在尝试添加字段(键)现有文档的所有记录。我想要;保存新记录时,自动保存到该字段的当前日期;
现在我的一个studen文档实例 { “_id”:ObjectId(“4f83ed9bcba9560ea474465d”), “名称” : ””, “姓” : ””, “数字”:“”, ..... }
我想要这个;
{ “_id”:ObjectId(“4f83ed9bcba9560ea474465d”), “名称” : ””, “姓” : ”” “日期”:currentTime() }
当保存到文档的新记录自动将当前时间保存到文档时。 我不想从客户端这样做,
答案 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
不同的语言处理日期的方式不同,因此根据您的应用程序所使用的语言,您必须检查该语言的文档,了解它如何实现日期对象。
希望这会让你指向正确的方向。