在.sh文件中,我使用下面的mongodump代码根据日期转储记录:
$MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT
-d $MONGO_DATABASE -c $MONGO_COLLECTION
--queryFile subset.jsonsubset.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))。
但是,我需要一个日期的动态值,就像第一种情况一样。一直在网上寻找解决方案,但找不到任何.
有什么想法吗?诚挚的问候
发布于 2016-08-30 13:44:17
希望它能为我工作!
问题是您的查询不是有效的JSON,因为它包含要计算的JS表达式(用日期计算)。
此外,我还创建了类似于节点的文件query.js,该文件实质上创建了查询JSON并将其写入控制台。
var oid =Math.floor(新日期(新日期().getTime()- 1000 * 60 * 60 * 24) / 1000).toString(16) + "0000000000000000";
console.log({ "_id":{ "$gte":new ObjectId("‘+ oid + '") } }');
以便您现在可以在您的shell中使用它,如下所示
mongoexport .-查询“$(节点query.js)”.
请参阅以下连结,
https://stackoverflow.com/questions/37854349
复制相似问题