MongoDB+;Node.js:无法正确插入日期

MongoDB+;Node.js:无法正确插入日期,mongodb,node.js,Mongodb,Node.js,我一直在用它来连接这两者。在我查询某个“日期”字段之前,一切都正常,我认为该字段应该作为javascript的date对象返回。但结果的类型是字符串,这对我来说很奇怪,也很不方便 插入看起来像这样: var doc = { date: new Date(), info: 'Some info' } db.users.insert( doc, {safe: true}, function(err, res) { ... }); 上述结果为(无\u id字段): 然而,使用MongoD

我一直在用它来连接这两者。在我查询某个“日期”字段之前,一切都正常,我认为该字段应该作为javascript的
date
对象返回。但结果的类型是字符串,这对我来说很奇怪,也很不方便

插入看起来像这样:

var doc = {
  date: new Date(),
  info: 'Some info'
}
db.users.insert( doc, {safe: true}, function(err, res) {
  ...
});
上述结果为(无
\u id
字段):

然而,使用MongoDB Shell插入工作正常,除了字段类型是
ISODate

> db.things.insert({ date: new Date() }); db.things.find();
{ "_id" : ObjectId("4eae9f2a34067b92db8deb40"), "date" : ISODate("2011-10-31T13:14:18.947Z") }
因此,问题是:我应该如何插入文档以查询日期字段作为
date
object?我想要的是在数据库服务器端设置字段。我只是发送一些类似于空字段的内容,db server使用默认的mongo机制为我设置这些字段

插入时间戳(as)也是一个问题,但这没什么大不了的


注:mongoskin和docs没有什么好运气。

ISODate是mongo存储日期的原生方式。我使用node mongodb原生npm模块,并使用new Date()习惯用法存储/检索javascript日期,如您的示例中所示。我不知道这是否是最近的更正,因为我在2012年启动了node和Mongo,但使用date对我来说非常简单。

JavaScript代码:

    collection.insert({"className"     : "models.Action", 
                       "title"         : "Email",
                       "description"   : "How are you today?",
                       "creationDate"  :  new Date("Fry, 4 May 2012 10:30:08 +0200 (CEST)"),
                       "creator"       : dbref },
在mongoDB制作

db.action.find({"title":"Email"})
> db.action.find({"title":"Email"})
{ "className" : "models.Action", "title" : "Email", "description" : "How are you today?", "creationDate" : ISODate("2012-05-04T08:30:08Z"), "creator" : { "$ref" : "person", "$id" : ObjectId("4f995e4824ac8d68f63adf69") }, "_id" : ObjectId("4fa79e2e92c2a19a09000002") }

这可能是我的代码或mongo驱动程序中的错误。现在,以下各项工作正常:

db.collection.insert({d: new Date()});

这里描述的时间戳支持:。

我想,更新时的日期问题已经消失了(不确定是谁的:mongo的驱动程序)。仍然想知道如何正确插入时间戳。谢谢。但正如我在问题评论中提到的,插入日期是可以的。但是时间戳是如何插入的。我想这可以通过
collection.insert({ts:new mongoskin.Timestamp()})
来完成。在插入MongoDB数据库时,不要使用
new Date().toISOString()
),因为MongDB已经为您进行了转换,而使用.toISOString()将生成.find()数据库上的运算符或$gte运算符fail@YiXiangChong:如何从mongodb获取匹配的日期文档?Hi@PappaS这里有一种从mongodb获取匹配日期文档的方法:``var today=new date(“2020-06-16”);var明天=新日期(“2020-06-17”);var out=“documents\u today”;agg_query=[{$match:{{{$gte:today,$lt:moday},},{$out:out}];db.documents\u collection.aggregate(聚合查询);db.documents_today.find().count()```谢谢作为旁注,在插入MongoDB数据库时不要使用
new Date().toISOString()
(只需使用
new Date()
),因为MongoDB已经为您进行了转换,使用.toISOString()将使数据库上的.find()运算符或$gte运算符失败
db.collection.insert({d: new Date()});