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 }
你能說明你是如何設置'model'的嗎?數字字段定義爲「數字」類型的數組嗎?如果是這樣,它會失敗。 – BatScream
'CastError'只是因爲你的模式被定義爲'Number',當你實際上試圖比較「數組」作爲'$ in'中的數組數組時。如果你認爲這種方法沒有涉及的模式,n可能你的模式對於存儲的數據是不正確的,因爲數字本身就是數組而不是模式中定義的單個值。因此,您的模式類型應該是''數字':[數字]'而不是''數字':數字',因爲您可能已經定義了它們。 –
請注意,**完全匹配**可能不是您真正需要的,而應該使用一系列['$ all'](https://docs.mongodb.org/manual/reference/運算符/查詢/所有/)操作在['$或'](https://docs.mongodb.org/manual/reference/operator/query/or/)表達式中。通過這種方式,數組中的數字「序列」並不需要與數組「完全匹配」,而只需要在列表中包含「全部」值。 –