我使用下面的mongodump代码在.sh
文件中根据日期转储记录:
$MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT
-d $MONGO_DATABASE -c $MONGO_COLLECTION
--queryFile subset.json
subset.json
:
{ "TheDate": { "$gte": new Date(new Date().setDate(new Date().getDate() - 1)) } }
这不起作用,并产生错误:
Failed: error parsing query as json: invalid character '.' after constructor argument
但如果我将subset.json
更改为包含静态日期值,则可以:
{ "TheDate": { "$gte": ISODate("2016-06-14T07:12:23.051Z") } }
以前ISODate("2016-06-14T07:12:23.051Z")
等于new Date(new Date().setDate(new Date().getDate() - 1))
。
但是我需要动态的日期值,就像第一种情况一样。 一直在寻找一个解决方案,但无法找到任何...
有什么想法吗? 最诚挚的问候
答案 0 :(得分:1)
希望它能为我工作!!!
问题是你的查询是无效的JSON,因为它包含要评估的JS表达式(你的日期计算)。
此外,我做了(快速和肮脏)与节点类似的事情,即使用此内容创建了一个文件 query.js ,这实际上创建了您的查询JSON并写入它到控制台
var oid = Math.floor(new Date(new Date()。getTime() - 1000 * 60 * 60 * 24)/ 1000).toString(16)+“0000000000000000”;
console.log('{“_ id”:{“$ gte”:new ObjectId(“'+ oid +'”)}}');
这样你现在就可以在你的shell中使用它了
mongoexport ... --query“$(node query.js)”...
请参阅以下链接,