0
我使用的是mongodb 2.6并试图使用查询选项创建转储给出“位置参数不允许”。mongodump使用--query参数给出“位置参数不允许”错误
我想获得所有参数的时间戳在指定范围之间,其ID是任何指定格式的产品。
mongodump --host 10.xx.xxx.xx:xxxx --db test --collection products --username abc --password uvw --query '{"parameterList":{$elemMatch:{ "paramName":"TimeStamp","paramValue":{$gte:"20160620000000",$lt:"20160724000000"}}},"parameterList.paramValue": {$in:[/SPC126/,/CSC234/]}}' --authenticationDatabase test --out "c:\New folder\dump"
文档结构
{
"_id": ObjectId("590074c362f41f15144996fa"),
"product": "device1",
"parameterList":[{"paramName":"TimeStamp",
"paramValue":"20160731000700"},
{"paramName":"Id",
"paramValue": "SPC126332"}]
}
所以你的属性实际上被命名为'“arrayfield”'或者它们实际上是否调用了别的东西,而且你没有写出你正试图在这里执行的实际语句?在同一查询中使用'$ elemMatch'和“点符号”形式也没有意义。除了不正确的查询结构不会返回正确的预期结果之外,您的“实际”正则表达式可能是一个问题。简而言之,**这是一个抽象的**,而不是你的**真实的**查询表达式。问题在于你真正使用的实际表达。你没有打扰张贴在这里。 –
@NeilLunn可以详细说明为什么在相同的查询中使用$ elemMatch和点符号没有意义。而且我在mongodb 3.2中执行同样的事情没有任何问题使用“查询文件”选项传递查询作为一个文件,我想在mongo上做同样的事情2.6 – Akash
你的问题没有任何意义,没有显示发出的实际查询更多点。问题是'$ elemMatch'正在寻找数组上的多个条件,在这种情况下,条件在两个不同的字段上。您在完全相同的数组路径和“$ elemMatch”的“外部”添加了“第三个”条件。这不符合其他条件,因为这可能是意图。 –