2016-04-14 16 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); 

上記のコードを実行しようとすると、以下のエラーが表示されます。モデルは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 } 
+1

'モデル 'の設定方法を表示できますか?フィールド 'numbers'は' Number'型の配列であると定義されていますか?もしそうなら、それは失敗するだろう。 – BatScream

+0

'CastError'は、' $ in'の中の数字の配列である "配列"を実際に比較しようとしているときにスキーマが 'Number'として定義されているためです。これがスキーマなしで動作すると言っているのであれば、スキーマ内で定義された単一の値ではなく、数値自体が配列であるため、おそらくスキーマは格納されたデータに対して正しくありません。したがって、あなたのスキーマタイプは、おそらく定義されているので、「数字」:[数字] 'ではなく、「数字」:数字ではありません。 –

+1

**正確なマッチング**はおそらくあなたが "本当に"望むものではなく、おそらく一連の['$ all'](https://docs.mongodb.org/manual/reference/ ['$ or'](https://docs.mongodb.org/manual/reference/operator/query/or/)の式の中で、演算子/クエリ/すべて/)演算を実行します。このように、配列内の数値の「配列」は、配列の「完全一致」である必要はありませんが、代わりにリスト内の値の「すべて」を含む必要があります。 –

答えて

1

あなたはそれが配列でないことを言って検証だんときので、マングースがあなたに不平を言っている、Number値を期待しているプロパティとマングースのために、配列の配列である、fooを渡しています数。

関連する問題