0
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

如果我逃避$andand$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

此查询在mongodbshell 上成功运行,我不明白为什么不能将其--query用作mongodump.

4

1 回答 1

2

在我看来,您的 $and 子句是不需要的。 {a: 'a', b: 'b'}是一样的$and : [{a: 'a'}, {b: 'b'}]

你也不需要使用"id",你可以直接写id,同样的for NumberLong

因此,我会将其重写为... --query '{id: "ABCD", sz: {$gt: 100}}' --out dump有效的方法(如果您在单引号中,请不要转义 $)。

于 2015-04-06T07:30:51.360 回答