我似乎无法在MongoDB中使用最基本的日期查询.使用看起来像这样的文档:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
Run Code Online (Sandbox Code Playgroud)
一个看起来像这样的查询:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从执行中得到0结果:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
Run Code Online (Sandbox Code Playgroud)
知道为什么这不起作用吗?
作为参考,此查询由Spring的MongoTemplate生成,因此我无法直接控制最终发送到MongoDB的查询.
(PS)
> db.version()
2.4.7
Run Code Online (Sandbox Code Playgroud)
谢谢!
我可以将iso日期转换为毫秒吗?例如,我想转换此iso
2012-02-10T13:19:11+0000
Run Code Online (Sandbox Code Playgroud)
到毫秒.
因为我想比较创建日期的当前日期.创建日期是iso日期.
我使用nodejs与node-mongodb-native驱动程序(http://mongodb.github.io/node-mongodb-native/).
我有一个日期属性存储为ISODate
类型的文档.
通过nodejs,我正在使用此查询:
db.collection("log").find({
localHitDate: {
'$gte': '2013-12-12T16:00:00.000Z',
'$lt': '2013-12-12T18:00:00.000Z'
}
})
Run Code Online (Sandbox Code Playgroud)
它什么都不返回.为了使它工作,我需要做以下事情:
db.collection("log").find({
localHitDate: {
'$gte': ISODate('2013-12-12T16:00:00.000Z'),
'$lt': ISODate('2013-12-12T18:00:00.000Z')
}
})
Run Code Online (Sandbox Code Playgroud)
但是ISODate
在我的nodejs代码中无法识别.
那么如何通过我的nodejs程序对mongo日期字段进行查询呢?
谢谢
我一直试图找到一种方法来创建一个与pyMongo客户端相关的ISODate对象,但到目前为止还没有任何成功.
我使用http://pypi.python.org/pypi/pymongo3客户端,这是目前Python 3中唯一可用的严重客户端,但问题似乎不是来自这个特定的pymongo版本.
我想知道你是否有人找到了从pymongo客户端使用这个MongoDB对象类型的解决方案...感谢您的帮助!
在Mongodb中,我以ISODate格式存储日期和时间.
看起来像这样
ISODate("2012-07-14T01:00:00+01:00")
Run Code Online (Sandbox Code Playgroud)
使用nodejs/javascript,我如何显示时间组件,以便我得到这样的东西
Time : 01:00
Run Code Online (Sandbox Code Playgroud)
我正在使用momentjs来使这更容易,但从我可以告诉momentjs似乎支持ISODate格式.
谢谢你的帮助.
我有一个我想要的日期对象
例如:
var date = new Date();
//Wed Mar 02 2016 16:54:13 GMT-0500 (EST)
var stringDate = moment(date).toISOString();
//2016-03-02T21:54:13.537Z
Run Code Online (Sandbox Code Playgroud)
但最终我真正想要的是
stringDate = '2016-03-02T21:54:00.000Z'
Run Code Online (Sandbox Code Playgroud) 我想将PHP生成的当前日期作为ISO日期格式存储到MongoDB集合中.
ISODate("2012-11-02T08:40:12.569Z")
Run Code Online (Sandbox Code Playgroud)
但是我无法在php中生成这种类型的日期,它将作为ISODate格式存储在MongoDB中.
这就是我所做的.
$d = new MongoDate(time());
echo $d;
Run Code Online (Sandbox Code Playgroud)
它正在输出类似的东西,
0.00000000 1353305590
Run Code Online (Sandbox Code Playgroud)
这不是我需要的格式.这该怎么做?
我有一个Mongo C#实现,它将datetime存储为UTC.
MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions options =
MongoDB.Bson.Serialization.Options.DateTimeSerializationOptions.UtcInstance;
var serializer =
new MongoDB.Bson.Serialization.Serializers.DateTimeSerializer(options);
MongoDB.Bson.Serialization.BsonSerializer.RegisterSerializer(
typeof(DateTime),
serializer);
Run Code Online (Sandbox Code Playgroud)
我还需要将用户本地时区与UTC一起存储.为了解释,我有两个属性
DateTime WorkItemToCompleteBy{get; set;}
[BsonDateTimeOptions(Kind = DateTimeKind.Unspecified)]
DateTime WorkItemToCompleteByLocal{get; set;}
Run Code Online (Sandbox Code Playgroud)
我想将澳大利亚/美国/印度/其他时间存储在本地属性中,并将相应的UTC值存储在另一个属性中.由于处理了几十个时区,我有代码将UTC转换为所需的时区并将其存储在WorkItemToCompleteByLocal属性中.我希望Mongo将这个值"按原样"存储并将其返回给我.问题是Mongo总是将它存储为ISODate并将值转换为Utc版本.解释.如果UTC是0730小时,我计算布里斯班时间为1730小时并将其设置为WorkitemToCompleteByLocal,它们将保存为
"WorkItemToCompleteBy" : ISODate("2013-06-05T07:30:00Z"),
"WorkItemToCompleteByLocal" : ISODate("2013-06-05T12:00:00Z"),
Run Code Online (Sandbox Code Playgroud)
Mongo将提供的时间解释为本地,服务器位于印度,并将其转换为相当于1200小时的UTC.虽然它将值恢复为1730(IST虽然)但是它违背了我的目的并阻止我在Mongo上运行任何基于本地时间的查询.没有想法.感谢任何帮助,以帮助存储WorkItemToCompleteByLocal日期'原样'而无需修改
如何得到这样一个组件minute
从ISODate
存储在MongoCollection
?
有没有办法在没有用日期部分重建新日期或格式化它的情况下在 javascript 中获取新日期类型的 ISO 字符串和午夜时间?
我一直在尝试这个
var date = new Date();
date.setHours(0, 0, 0, 0);
document.write(date.toISOString());
Run Code Online (Sandbox Code Playgroud)
我得到了这个
2017-04-20T04:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
我想得到这个
2017-04-20T00:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
是否有我一直在尝试的内置函数或方法来获得所需的输出(使用日期部分重建日期对象)?