使用Matlab的MongoDB连接器mongoc类能否对date日期对象执行查询?
问题原因
报错是因为ISODate()是MongoDB Shell专属的语法,不属于标准JSON格式,Matlab的mongoc驱动解析JSON查询字符串时无法识别该语法,因此抛出解析错误。
解决方案
方案1(更推荐,无需拼接JSON字符串)
直接使用Matlab原生的datetime对象构造查询结构体,mongoc驱动会自动将datetime类型转换为MongoDB兼容的BSON日期类型,示例代码如下:
conn = mongoc('localhost', 27017, database_name); % 构造起止日期,时区需和你存储的date字段时区保持一致,示例用UTC时区 start_date = datetime('2015-01-01', 'TimeZone', 'UTC'); end_date = datetime('2020-01-01', 'TimeZone', 'UTC'); % 构造查询结构体 query = struct('date', struct('$gte', start_date, '$lte', end_date)); res = find(conn, collection_name, 'Query', query);
方案2(使用扩展JSON格式)
如果要使用JSON字符串作为查询条件,需要使用MongoDB扩展JSON的$date字段来标识日期类型,示例代码如下:
conn = mongoc('localhost', 27017, database_name); query = '{"date": {"$gte": {"$date": "2015-01-01T00:00:00Z"}, "$lte": {"$date": "2020-01-01T00:00:00Z"}}}'; res = find(conn, collection_name, 'Query', query);
注意事项
需要确保查询时使用的时区和集合中存储的date字段时区一致,避免出现查询结果不符合预期的问题。
内容的提问来源于stack exchange,提问作者user142389358902
相关产品推荐
相关产品推荐

