You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mongoexport多条件查询报错及日期变量传递问题求助

mongoexport多条件导出报错及日期变量传递解决方案

一、"error parsing query as Extended JSON" 错误解决

错误原因

Studio 3T等GUI工具支持MongoDB Shell语法(比如ISODate("2024-02-13T00:00:01.000+0000")),但mongoexport要求严格遵循Extended JSON格式,不能直接使用Shell中的函数调用语法,否则会触发JSON解析错误。

修正方案

将查询中的ISODate("日期字符串")替换为Extended JSON的日期格式{"$date": "ISO标准日期字符串"},日期字符串需采用YYYY-MM-DDTHH:mm:ss.sssZ格式(Z代表UTC时区)。

关键片段对比

报错的查询片段:

"firstInsertTimestamp" : { "$gt" : ISODate("2024-02-13T00:00:01.000+0000")}

修正后的查询片段:

"firstInsertTimestamp" :{"$gt" : {"$date": "2024-02-14T00:00:00.000Z"}}

完整修正后的可执行命令:

/u01/ba/mongo/mongoexport --host ui-west-prod-mongodb-ent1-vm-01.az.3pc.att.com:17345 --authenticationDatabase admin -u 'm425@ub5@ub.com' -p 'prd@23' --readPreference secondaryPreferred --db entaction --collection statuses --ssl --sslCAFile /u01/a1_cert.pub --sslAllowInvalidCertificates --type=csv -f "_id, tyId,Uid,uan,taskName,InsertTimestamp,UpdateTimestamp,results,status" -q '{"taskName" : {"$in": ["RT_WAP", "LI_WAP", "TI_SWAP"]}, "results" :{"$in": ["TIMEOUT","SUCCEEDED","FAILURE", "INPROGRESS", "SUCCESS"]},  "firstInsertTimestamp" :{"$gt" : {"$date": "2024-02-14T00:00:00.000Z"}}}' -o /u01/ent1_session_stats.csv

二、日期变量传递实现

硬编码日期可正常执行,但直接在查询中使用Shell变量会因引号转义问题失效,可通过以下两种方式实现变量传递:

方式1:拼接查询字符串(推荐)

先定义日期变量,再将变量嵌入查询字符串中,注意引号转义:

# 定义日期变量(需符合YYYY-MM-DDTHH:mm:ss.sssZ格式)
START_DATE="2024-02-14T00:00:00.000Z"

# 拼接查询语句,用双引号包裹查询内容,变量直接替换
QUERY="{\"taskName\": {\"$in\": [\"RT_WAP\", \"LI_WAP\", \"TI_SWAP\"]}, \"results\": {\"$in\": [\"TIMEOUT\",\"SUCCEEDED\",\"FAILURE\", \"INPROGRESS\", \"SUCCESS\"]}, \"firstInsertTimestamp\": {\"$gt\": {\"$date\": \"$START_DATE\"}}}"

# 执行mongoexport命令
/u01/ba/mongo/mongoexport --host ui-west-prod-mongodb-ent1-vm-01.az.3pc.att.com:17345 --authenticationDatabase admin -u 'm425@ub5@ub.com' -p 'prd@23' --readPreference secondaryPreferred --db entaction --collection statuses --ssl --sslCAFile /u01/a1_cert.pub --sslAllowInvalidCertificates --type=csv -f "_id, tyId,Uid,uan,taskName,InsertTimestamp,UpdateTimestamp,results,status" -q "$QUERY" -o /u01/ent1_session_stats.csv

方式2:单引号嵌套变量

通过单引号拼接固定部分,变量部分用双引号嵌入:

START_DATE="2024-02-14T00:00:00.000Z"

# 单引号包裹固定JSON结构,变量部分用'"$START_DATE"'拼接
QUERY='{"taskName": {"$in": ["RT_WAP", "LI_WAP", "TI_SWAP"]}, "results": {"$in": ["TIMEOUT","SUCCEEDED","FAILURE", "INPROGRESS", "SUCCESS"]}, "firstInsertTimestamp": {"$gt": {"$date": "'"$START_DATE"'"}}}'

/u01/ba/mongo/mongoexport --host ui-west-prod-mongodb-ent1-vm-01.az.3pc.att.com:17345 --authenticationDatabase admin -u 'm425@ub5@ub.com' -p 'prd@23' --readPreference secondaryPreferred --db entaction --collection statuses --ssl --sslCAFile /u01/a1_cert.pub --sslAllowInvalidCertificates --type=csv -f "_id, tyId,Uid,uan,taskName,InsertTimestamp,UpdateTimestamp,results,status" -q "$QUERY" -o /u01/ent1_session_stats.csv

内容的提问来源于stack exchange,提问作者singhoracledba2023 singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:23:27