gpt4 book ai didi

mongodb - 如何将 mongoexport 与查询脚本文件一起使用

转载 作者:可可西里 更新时间:2023-11-01 09:56:51 27 4
gpt4 key购买 nike

我正在尝试按照本教程进行操作:http://www.ultrabug.fr/tag/mongoexport/

并为查询行使用一个 sh 文件。这是我的文件:

#!/bin/bash
d=`date --date="-3 month"`
echo "{ timeCreated: { "\$lte": $d} }"

这是我的 mongoexport 行:

 mongoexport --db game_server --collection GameHistory -query /home/dev/test2.sh --out /home/dev/file.json

我不断得到:

assertion: 16619 code FailedToParse: FailedToParse: Expecting '{': offset:0 of:/home/dev/test2.sh

为什么?我怎样才能使它工作?

最佳答案

我在您的方法中发现了几个错误,让我们一一检查。

日期格式

MongoDB 期望日期是一个数字或 ISO 8601字符串。

不幸的是,unix date 实用程序没有对这种格式的内置支持,因此您应该使用:

d=`date --date="-3 month" -u +"%Y-%m-%dT%H:%M:%SZ"`

使用扩展的 JSON

JSON 规范不支持日期,因此您应该使用 MongoDB extended JSON .因此,您的最终查询应如下所示:

{ "timeCreated": { "$lte": { "$date": "2014-05-12T08:53:29Z" } } }

test.sh输出

你弄错了引号。这是一个脚本示例,输出正确的 JSON:

#!/bin/bash
d=`date --date="-3 month" -u +"%Y-%m-%dT%H:%M:%SZ"`
echo '{ "timeCreated": { "$lte": { "$date": "'$d'" } } }'

将查询传递给 mongoexport

mongoexport 期望 --query 是一个 JSON 字符串,而不是 .sh 脚本。因此,当您将文件路径传递给 --query 时,mongoexport 期望它是一个 JSON 文件。

要修复它,您应该自己执行 test2.sh 并将结果字符串传递给 mongoexport:

mongoexport --db game_server --collection GameHistory \
--query "`./test2.sh`" --out ./test2.json

N.B. 注意 " 引号围绕 ./test2.sh 调用。他们告诉 bash 对待 ./test2 .sh 作为单个参数输出,忽略所有内部引号和空格。

关于mongodb - 如何将 mongoexport 与查询脚本文件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258803/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com