我似乎连最基本的日期查询都无法在MongoDB中使用.用一个看起来像这样的文档:

{
    "_id" : "foobar/201310",
    "ap" : "foobar",
    "dt" : ISODate("2013-10-01T00:00:00.000Z"),
    "tl" : 375439
}

和如下所示的查询:

{ 
    "dt" : { 
        "$gte" : { 
            "$date" : "2013-10-01T00:00:00.000Z"
        }
    }
}

I get 0 results from executing:

db.mycollection.find({
  "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})

Any idea why this doesn't work?

作为参考,这个查询是由Spring's MongoTemplate生成的,所以我不能直接控制最终发送到MongoDB的查询.

(附言)

> db.version()
2.4.7

Thanks!

推荐答案

虽然$dateMongoDB Extended JSON的一部分,这是mongoexport的默认值,但我不认为你真的可以把它作为查询的一部分.

If try exact search with $date like below:

db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})

you'll get the error:

error: { "$err" : "invalid operator: $date", "code" : 10068 }

试试这个:

db.mycollection.find({
    "dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})

或者(以下是@user3805045人的 comments ):

db.mycollection.find({
    "dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})

ISODate可能还需要比较没有时间的日期(用@MattMolnar表示).

根据Data Types in the mongo Shell,两者应该是等效的:

The mongo shell provides various methods to return the date, either as a string or as a Date object:

  • 方法,该方法以字符串形式返回当前日期.
  • new Date() constructor which returns a Date object using the ISODate() wrapper.
  • ISODate() constructor which returns a Date object using the ISODate() wrapper.

使用ISODateshould still return a Date object.

当需要严格的JSON表示时,可以使用{"$date": "ISO-8601 string"}.一个可能的例子是Hadoop连接器.

Json相关问答推荐

JOLT将扁平数组内其他字段的两个值相乘

JSON字符串处理注入引号

PowerShell脚本未按预期生成预期的JSON输出

如何在Swift中使用JSON编码器的泛型

使用动态语言jQuery:根据匹配模式提取与其他值匹配的值

流导入错误:重新上传时不存在布局释放 UUID

使用 jq 将键值行转换为 json

将嵌套的 JSON 对象规范化为 Pandas 数据框

如何在 Node.js 中解析包含NaN的 JSON 字符串

使用 Javascript 判断 JSON 对象是否包含值

如何在不解析的情况下在javascript中同步包含JSON数据?

在 JavaScript 中从 Json 数据中删除反斜杠

通过 RestAssured 中的 JsonPath 访问匿名数组的元素

jQuery fullcalendar 发送自定义参数并使用 JSON 刷新日历

将文件发送到 Rails JSON API

在 Qt 4.7 中解析 JSON 的最简单方法

关于使用 $ref 的 JSON 模式

可以在 SharedPreferences 中保存 JSON 数组吗?

YAML 将 5e-6 加载为字符串而不是数字

JSON 和 BSON 哪个更轻量级?