2016-04-14 345 views
1
var foo = [ [ 14, 31, 55, 56, 60, 19 ], [30, 32, 33, 50, 64, 6 ], [9, 15, 22, 35, 48, 3] ]; 

var bar = await Model.find({ 
    numbers: { $in: foo } 
    }); 

console.log(bar); 

當我嘗試運行上面的代碼時,出現下面的錯誤。該模型是貓鼬模型,查詢在使用robomongo的原始mongodb查詢中運行時沒有問題。

{ [CastError: Cast to number failed for value "14,31,55,56,60,19" at path "numbers"] 
    message: 'Cast to number failed for value "14,31,55,56,60,19" at path "numbers"', 
    name: 'CastError', 
    kind: 'number', 
    value: [ 14, 31, 55, 56, 60, 19 ], 
    path: 'numbers', 
    reason: undefined } 
+1

你能說明你是如何設置'model'的嗎?數字字段定義爲「數字」類型的數組嗎?如果是這樣,它會失敗。 – BatScream

+0

'CastError'只是因爲你的模式被定義爲'Number',當你實際上試圖比較「數組」作爲'$ in'中的數組數組時。如果你認爲這種方法沒有涉及的模式,n可能你的模式對於存儲的數據是不正確的,因爲數字本身就是數組而不是模式中定義的單個值。因此,您的模式類型應該是''數字':[數字]'而不是''數字':數字',因爲您可能已經定義了它們。 –

+1

請注意,**完全匹配**可能不是您真正需要的,而應該使用一系列['$ all'](https://docs.mongodb.org/manual/reference/運算符/查詢/所有/)操作在['$或'](https://docs.mongodb.org/manual/reference/operator/query/or/)表達式中。通過這種方式,數組中的數字「序列」並不需要與數組「完全匹配」,而只需要在列表中包含「全部」值。 –

回答

1

你傳遞foo,這是一個數組的數組與期待一個Number值的屬性,以貓鼬,從而貓鼬抱怨給你當它是驗證通過說數組是不是數。

相關問題