ISODate in --queryFile

时间:2016-06-16 08:54:03

标签: json mongodb mongodump

我使用下面的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))

但是我需要动态的日期值,就像第一种情况一样。 一直在寻找一个解决方案,但无法找到任何...

有什么想法吗? 最诚挚的问候

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)”...

请参阅以下链接,

Find 15 mins data with ObjectID field