尝试运行mongoexport并查询我的查询参数。
mongoexport -d test-copy -c collection -o /home/ubuntu/mongodb-archiving/mongodump/collection.json --query '{"created_at": {\$lte: new Date(1451577599000) } }'
收集是:
{"created_at" : ISODate("2014-03-07T06:32:19.172Z")}
我可以在Mongo Client中查询。
导致以下错误:
断言:10340:解析JSON字符串附近失败:“created_a
答案 0 :(得分:2)
您的查询中有\
。请删除它。
--query '{"created_at": {$lte: new Date(1451577599000)}}'
答案 1 :(得分:0)
mongoexport
和mongodump
工具需要--query
参数的有效JSON对象。来自https://docs.mongodb.com/manual/reference/program/mongodump/#cmdoption--query:
- 查询,-q
提供JSON文档作为查询,可选择限制mongodump输出中包含的文档。
您必须将查询括在单引号中(例如'),以确保它不会与您的shell环境进行交互。
由于您传递给mongoexport
的查询参数,该命令失败,由于存在new Date()
这是一个Javascript语句而不是有效的JSON对象。
所需的修改只是使用您提供的示例ISODate()
对象,.e.g:
mongoexport -d test-copy -c collection -o /home/ubuntu/mongodb-archiving/mongodump/collection.json --query '{"created_at": {$lte: ISODate("2014-03-07T06:32:19.172Z") } }'
您只需将ISODate()
的内容替换为您需要的日期。
答案 2 :(得分:0)
你应该在mongoexport上使用$ date:
li
答案 3 :(得分:0)
删除\$lte
并在查询中将其更改为引用"$lt"
,并且mongodump可以正常工作。
在mongodb 3.0.8上测试
> use appdb
> db.testcoll.find({})
{ "_id" : 1, "created_at" : ISODate("2016-09-15T08:46:12.272Z") }
{ "_id" : 2, "created_at" : ISODate("2016-09-15T08:46:12.272Z") }
{ "_id" : 3, "created_at" : ISODate("2016-09-16T08:46:30.736Z") }
{ "_id" : 4, "created_at" : ISODate("2016-09-16T08:47:12.368Z") }
{ "_id" : 5, "created_at" : ISODate("2016-09-16T08:47:15.562Z") }
> db.testcoll.find({"created_at":{"$lt":new Date("2016-09-16")}})
{ "_id" : 1, "created_at" : ISODate("2016-09-15T08:46:12.272Z") }
{ "_id" : 2, "created_at" : ISODate("2016-09-15T08:46:12.272Z") }
> db.testcoll.find({"created_at":{"$lt":new Date(1473984000)}})
// make sure you are using millisecond version of epoch
> db.testcoll.find({"created_at":{"$lt":new Date(1473984000000)}})
{ "_id" : 1, "created_at" : ISODate("2016-09-15T08:46:12.272Z") }
{ "_id" : 2, "created_at" : ISODate("2016-09-15T08:46:12.272Z") }
现在是mongodump部分:
dp@xyz:~$ mongodump -d appdb -c testcoll --query '{"created_at":{"$lt":new Date(1473984000000)}}'
2016-09-16T14:21:27.695+0530 writing appdb.testcoll to dump/appdb/testcoll.bson
2016-09-16T14:21:27.696+0530 writing appdb.testcoll metadata to dump/appdb/testcoll.metadata.json
2016-09-16T14:21:27.708+0530 done dumping appdb.testcoll (2 documents)