--queryFile 中的 ISODate
ISODate in --queryFile
我使用下面的 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))
。
但是我需要一个动态的日期值,就像第一种情况一样。
一直在网上寻找解决方案,但找不到...
有什么想法吗?
最好的问候
希望它对我有用!!!
问题是您的查询无效 JSON 因为它包含要评估的 JS 表达式(您的计算与日期)。
此外,我做了(快速而肮脏的)与 node 类似的事情,即用这个创建了一个文件 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)" ...
请参考下文link,
我使用下面的 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))
。
但是我需要一个动态的日期值,就像第一种情况一样。 一直在网上寻找解决方案,但找不到...
有什么想法吗? 最好的问候
希望它对我有用!!!
问题是您的查询无效 JSON 因为它包含要评估的 JS 表达式(您的计算与日期)。
此外,我做了(快速而肮脏的)与 node 类似的事情,即用这个创建了一个文件 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)" ...
请参考下文link,