将 mongoexport 与 --query 一起用于 ISODate
Use mongoexport with a --query for ISODate
我有此查询,但出现语法错误:意外标识符
mongoexport --db ium --collection events \
--query 'db.events.find({'created_at' : {
$gte: ISODate("2016-03-01T00:00:00.001Z"),
$lte: ISODate("2016-03-29T23:59:59:59.000Z")
},
"name" : "UPDATE_SUCCESS"})' \
--out guille1_test.json
这有什么问题吗?
您需要使用 "extended json" in queries with mongoexport. So the way to specify "dates" is with $date
instead. And the --query
只是 JSON 格式中的 "query string"。不是整个命令输入 shell:
mongoexport --db ium --collection events \
--query '{
"created_at": {
"$gte": { "$date": "2016-03-01T00:00:00.001Z" },
"$lte": { "$date": "2016-03-29T23:59:59.000Z" }
},
"name": "UPDATE_SUCCESS"
}' \
--out guile1_test.json
还要注意 $lte
参数中更正的日期字符串,当然还有 "quoting" 在 JSON 参数和 [=15] 正文周围使用 ''
=] 围绕内部表达式和值。 重要 这些类型的引号是不同的,"shell arguments" 应该将它们的 "outer" 引号设为 ''
,否则 "shell" 尝试评估包含的表达式。
另一个可行的解决方案是使用 new Date()
构造函数,如 MongoDB manual 中所述。这将导致更小的查询主体足迹,如下所示:
mongoexport --db ium --collection events \
--query '{
"created_at": {
"$gte": new Date("2016-03-01T00:00:00.001Z"),
"$lte": new Date("2016-03-29T23:59:59.000Z")
},
"name": "UPDATE_SUCCESS"
}' \
--out guile1_test.json
这种方法对我来说开箱即用,而所有其他替代方法都失败了。有一篇相关文章描述了这种方法 here。
实现它的最佳方法如下。因为 new Date 和 IOSDate 对于这个命令来说是无效的。
For remote host
mongoexport --host {{host}} --username {{username}} --password {{passord}} --authenticationDatabase admin --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"} } }' --type json --out {{path of directory where you would want to export file.}}
For local host
mongoexport --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"} } }' --type json --out {{path of directory where you would want to export file.}}
我有此查询,但出现语法错误:意外标识符
mongoexport --db ium --collection events \
--query 'db.events.find({'created_at' : {
$gte: ISODate("2016-03-01T00:00:00.001Z"),
$lte: ISODate("2016-03-29T23:59:59:59.000Z")
},
"name" : "UPDATE_SUCCESS"})' \
--out guille1_test.json
这有什么问题吗?
您需要使用 "extended json" in queries with mongoexport. So the way to specify "dates" is with $date
instead. And the --query
只是 JSON 格式中的 "query string"。不是整个命令输入 shell:
mongoexport --db ium --collection events \
--query '{
"created_at": {
"$gte": { "$date": "2016-03-01T00:00:00.001Z" },
"$lte": { "$date": "2016-03-29T23:59:59.000Z" }
},
"name": "UPDATE_SUCCESS"
}' \
--out guile1_test.json
还要注意 $lte
参数中更正的日期字符串,当然还有 "quoting" 在 JSON 参数和 [=15] 正文周围使用 ''
=] 围绕内部表达式和值。 重要 这些类型的引号是不同的,"shell arguments" 应该将它们的 "outer" 引号设为 ''
,否则 "shell" 尝试评估包含的表达式。
另一个可行的解决方案是使用 new Date()
构造函数,如 MongoDB manual 中所述。这将导致更小的查询主体足迹,如下所示:
mongoexport --db ium --collection events \
--query '{
"created_at": {
"$gte": new Date("2016-03-01T00:00:00.001Z"),
"$lte": new Date("2016-03-29T23:59:59.000Z")
},
"name": "UPDATE_SUCCESS"
}' \
--out guile1_test.json
这种方法对我来说开箱即用,而所有其他替代方法都失败了。有一篇相关文章描述了这种方法 here。
实现它的最佳方法如下。因为 new Date 和 IOSDate 对于这个命令来说是无效的。
For remote host
mongoexport --host {{host}} --username {{username}} --password {{passord}} --authenticationDatabase admin --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"} } }' --type json --out {{path of directory where you would want to export file.}}
For local host
mongoexport --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"} } }' --type json --out {{path of directory where you would want to export file.}}