0

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

现在我的一个文档实例 studen { "_id" : ObjectId("4f83ed9bcba9560ea474465d"), "name" : "", "lastname" : "", "number" : "", .....}

我想要这个;

{ "_id" : ObjectId("4f83ed9bcba9560ea474465d"), "name" : "", "lastname" : "" "Date" : currentTime() }

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

4

1 回答 1

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

传递给更新函数的 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

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

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

于 2012-04-10T15:26:11.277 回答