当前位置: 首页 > 知识库问答 >
问题:

MongoDB如何使用$date操作符进行查询?

端木兴国
2023-03-14

编辑-上下文:我正在使用Talend ETL工具,并在查询中使用ISODate或Date或new Date,如以下错误导致失败,因此我需要解决方法:

{'dt' : ISODate('2014-01-01') }
{'dt' : Date('2014-01-01') }
{'dt' : new Date('2014-01-01') }

如果没有以下错误,我无法做到这一点:

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)

大概是因为ETL工具调用:

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

考虑到我无法在com的查询中使用新日期()。mongodb。util。JSON。parse()方法,是否有解决方法?

我正在使用MongoDB v2.6.3,无法让$date运算符工作。

db.testdate.insert( {dt:ISODate('2014-01-01')} )
db.testdate.find()

db.testdate.find( {dt : {$date : '2014-01-01T00:00:00Z'}} )

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

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

我还看到过其他示例,其中使用$date操作符是可行的,但在我的机器上无法实现。

有人知道为什么吗?

共有3个答案

晁文斌
2023-03-14

使用$date运算符时,您应该传递它Long值,指示“Epoch Unix时间戳”

例如:{“time”:{“$gte”:{“$date”:157065480000}}}

请注意,只有mongodump和mongoexport可以解释$date,这在MongoShell中不起作用

鄢选
2023-03-14

根据文档中的内容,<代码>{“$日期”:

看看应该如何按日期进行查询(基本上使用gte、$gt、$lte、$lt)。

以下是一些相关答案:一和二。

令狐凌
2023-03-14

$date是为工具mongoimportmongoexport等准备的。Mongo shell无法识别它,您应该使用Date()ISODate()代替。

 类似资料:
  • 我使用MongoTemplate处理MongoDB 我想将文档的列更新为当前时间 在Mongodb命令行客户端中,它将与 数据库集合名称。更新({_id:1},{timeCol:new Timestamp()});或db.collectionName。更新({_id:1},{timeCol:new Date()}); 但是我不知道我是如何通过使用mongo模板做到这一点的。 更新更新;update

  • 我在mysql表中有一个int列,用于存储与状态相关的位。我对基于状态字段中是否设置了一个或多个位的查询感兴趣。 我尝试了以下方法:

  • 问题内容: Iam使用 searchkick 库作为 Elasticsearch 客户进行产品搜索。 https://github.com/ankane/searchkick 可以创建“ OR”条件和“ AND”条件; AND操作 Product.search,其中:{价格:{lte:200},in_stock:true} 或操作 Product.search,其中:{或:[[{{in_stock

  • 我们希望使用。NET C#。这样做的最好方法是什么? 我们知道BulkExecutor库只支持批量导入和批量更新操作。批量查询/读取操作是否也有类似的情况? 目前,我正在使用一个小精灵。Net.Driver,GremlinClient(< code > https://docs . Microsoft . com/en-us/azure/cosmos-db/create-graph-dot net

  • 问题内容: 我想在管道中使用mgo在golang中运行以下查询。 我到处都看过,但是找不到这样的例子。我尝试了许多不同的组合,例如: 正确编译的,什么也找不到。有任何想法吗? 先感谢您 问题答案: 您的mongo查询可以转换为以下内容: 该查询应等效于mongo控制台中的以下内容: 如果您希望使用无序列图,则可能是这样的:

  • 本文向大家介绍MongoDB中如何使用JOIN操作详解,包括了MongoDB中如何使用JOIN操作详解的使用技巧和注意事项,需要的朋友参考一下 前言 MongoDB是由C++语言所编写的一种面向文档的非关系型数据库(是一种NoSql数据库实现),也是介于关系型数据库和非关系型数据库之间的数据存储产品,而众所周知SQL与NoSQL最大的不同之一就是不支持JOIN,在传统的数据库中,SQL JOIN子