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);
上記のコードを実行しようとすると、以下のエラーが表示されます。モデルはmongooseモデルであり、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 }
'モデル 'の設定方法を表示できますか?フィールド 'numbers'は' Number'型の配列であると定義されていますか?もしそうなら、それは失敗するだろう。 – BatScream
'CastError'は、' $ in'の中の数字の配列である "配列"を実際に比較しようとしているときにスキーマが 'Number'として定義されているためです。これがスキーマなしで動作すると言っているのであれば、スキーマ内で定義された単一の値ではなく、数値自体が配列であるため、おそらくスキーマは格納されたデータに対して正しくありません。したがって、あなたのスキーマタイプは、おそらく定義されているので、「数字」:[数字] 'ではなく、「数字」:数字ではありません。 –
**正確なマッチング**はおそらくあなたが "本当に"望むものではなく、おそらく一連の['$ all'](https://docs.mongodb.org/manual/reference/ ['$ or'](https://docs.mongodb.org/manual/reference/operator/query/or/)の式の中で、演算子/クエリ/すべて/)演算を実行します。このように、配列内の数値の「配列」は、配列の「完全一致」である必要はありませんが、代わりにリスト内の値の「すべて」を含む必要があります。 –