2016-03-11 74 views
1

我正在使用水線,並且使用mongoimport命令導入了數據庫。我使用本地驅動程序連接到mongo,調用.find和.aggregate。

當使用$或來查詢多個記錄與來自上一組查詢的結果時。該陣列看起來像

[{"\"ProductID\"": "76543"},{"\"ProductID\"": "74632"}, {"\"ProductID\"": "76534",...n}] 

支付沒有頭腦的KEY,這是一個臨時組建,由於使用的CSV轉換成JSON,然後mongoimporting新文件在文件中控制字符。我應該可以用數組做下列查詢。

collection.find({$or: arrayResults }).toArray().then(function(result)... 

然後我收到錯誤:MongoError:類型錯誤:無法讀取的不確定

財產「身份證」,我能夠通過使陣列較小停止錯誤。這不是爲了強制用戶的批量查詢,但我不知道如何解決問題。

作爲一種解決方法,聚合框架$匹配階段似乎沒有任何問題。

collection.aggregate([{$match: {$or: arrayResults}}}]).toArray().then(.... 

這個問題是我沒有在我的查詢中使用「id」,所以我不明白什麼是錯的。

+0

嘗試使用'{「ProductID」:「74632」},''沒有'\「'? – zangw

+0

這就是它們在db中的樣子,所以現在它必須是這樣的。損壞數據庫? – chacliff

回答

3

這個問題歸結爲與node.js驅動程序的兼容性。

探索了編寫代碼找出問題的許多途徑。以及遇到不一致的錯誤,只是簡單地掛在應用程序。

我驗證了節點驅動程序的版本是2.0.44。我的數據庫版本是3.2的MongoDB。 mongoDB明確指出與3.2的nodejs驅動程序的兼容性> = 2.1.0。

我很驚訝沒有人出現建議這是一個mongoDB的專家,考慮到發生的錯誤與我的數據庫中的值完全不一致。

相關問題