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」的「外部」添加了「第三個」條件。這不符合其他條件,因爲這可能是意圖。 –