mongodump --username user --password password --db db --collection collection --query '{$and: [{"id": "ABCD"}, {"sz": {$gt: NumberLong(100)}}]}' --out dump
执行时,mongodump
抱怨:
assertion: 16619 code FailedToParse: FailedToParse: Bad characters in value: offset:63
如果我逃避$and
和$gt
条款:
mongodump --username user --password password --db db --collection collection --query '{\$and: [{"id": "ABCD"}, {"sz": {\$gt: NumberLong(100)}}]}' --out dump
它反而会抱怨
assertion: 16619 code FailedToParse: FailedToParse: First character in field must be [A-Za-z$_]: offset:1
此查询在mongodb
shell上成功运行,我无法理解为何我无法将其用作--query
中的mongodump
参数。
答案 0 :(得分:2)
在我看来,你的$和子句不是必需的。
{a: 'a', b: 'b'}
与$and : [{a: 'a'}, {b: 'b'}]
相同。
您也不需要使用"id"
,只需为id
撰写NumberLong
即可。
所以我会将其重写为... --query '{id: "ABCD", sz: {$gt: 100}}' --out dump
,它可以正常工作(如果你在单引号中,你就不要逃避$。)