2015-04-06 99 views
0
mongodump --username user --password password --db db --collection collection --query '{$and: [{"id": "ABCD"}, {"sz": {$gt: NumberLong(100)}}]}' --out dump 

执行时,mongodump与抱怨: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上成功运行,我看不出为什么我不能在mongodump中将它用作--query参数。

回答

2

在我看来,你的$和子句是不需要的。 {a: 'a', b: 'b'}$and : [{a: 'a'}, {b: 'b'}]相同。

您也不需要使用"id",您可以只写id,与NumberLong相同。

所以我会重写它作为... --query '{id: "ABCD", sz: {$gt: 100}}' --out dump哪些作品(如果你在单引号中你不想逃避$)。