相关疑难解决方法(0)

MongoDB如何用$ date运算符查询?

编辑 - 上下文:我正在使用Talend ETL工具并在查询中使用ISODate或Date或new Date,如下所示失败并出现错误,因此我需要解决此问题:

{'dt' : ISODate('2014-01-01') }
{'dt' : Date('2014-01-01') }
{'dt' : new Date('2014-01-01') }
Run Code Online (Sandbox Code Playgroud)

没有以下错误我不能这样做:

at com.mongodb.util.JSONParser.read(JSON.java:272)
at com.mongodb.util.JSONParser.parse(JSON.java:161)
at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
at com.mongodb.util.JSONParser.parse(JSON.java:195)
at com.mongodb.util.JSONParser.parse(JSON.java:145)
at com.mongodb.util.JSON.parse(JSON.java:81)
at com.mongodb.util.JSON.parse(JSON.java:66)
Run Code Online (Sandbox Code Playgroud)

大概是因为ETL工具调用:

com.mongodb.DBObject myQuery_tMongoDBInput_1 = (com.mongodb.DBObject) com.mongodb.util.JSON
                    .parse("{'dt': new Date('2000-01-01T08:00:00Z')}");
Run Code Online (Sandbox Code Playgroud)

鉴于我不能new Date()在查询中使用该com.mongodb.util.JSON.parse()方法,是否有解决方法?


我正在使用MongoDB v2.6.3并且无法使用$ date运算符.

db.testdate.insert( {dt:ISODate('2014-01-01')} )
db.testdate.find()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

db.testdate.find( {dt : {$date : '2014-01-01T00:00:00Z'}} )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

错误:{"$ err":"无法规范查询:BadValue未知顶级运算符:$ date","code":17287}

db.testdate.find(  {dt : {$gte : {$date : '2000-01-01T00:00:00Z'}}} )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我已经看到了其他使用$ date运算符的例子,但是在我的机器上无法做到这一点.

有谁知道为什么?

mongodb mongodb-query

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

mongodb ×1

mongodb-query ×1