私は数字の配列を持っています。配列の各アイテムを、コレクションの特定のキーのすべての値と比較したいと思います。それは可能ですか?以下の例では、私は、05,07,21,36のIDを持っているオブジェクトのみをつかむ、そして42 ..しかし、この試みは失敗したと思います -Mongoの特定のキーを照会するために配列を反復処理する方法は?
var playlist =[05,07,21,36,42]
クエリ:
Track.find({ id: playlist })...
コレクション:
artist:{type: String},
title: {type: String},
id: {type: String}...
性が実際に "_id" である - Track.find({ "_id":で{$:プレイリスト}}) - 、私はこれをしようとしたとき、私はエラーが返されました下に印刷されます。何か案は?
メッセージ: 'のObjectIdにキャストモデル "トラック" のパス "_id" で値 "597e2f68c83f5d5ba6723427,597e2f68c83f5d5ba6723429,597e2f68c83f5d5ba672342c、597e2f68c83f5d5ba6723429,597e2f68c83f5d5ba672342c、597e2f68c83f5d5ba672342b、597e2f68c83f5d5ba672342d" に失敗しました'、 名: 'CastError'、 のstringValue: ' "597e2f68c83f5d5ba6723427,597e2f68c83f5d5ba6723429,597e2f68c83f5d5ba672342c、597e2f68c83f5d5ba6723429,597e2f68c83f5d5ba672342c、597e2f68c83f5d5ba672342b、597e2f68c83f5d5ba672342d"'、 種類: 'ObjectIdが'、 値: '597e2f68c83f5d5ba6723427,597e2f68c83f5d5ba6723429,597e2f68c83f5d5ba672342c、597e2f68c83f5d5ba6723429,597e2f68c83f5d5ba672342c、597e2f68c83f5d5ba672342b、597e2f68c83f5d5ba672342d'、 パス: '_id' 、
すべてのMongoDBのドキュメントを参照してくださいしてみてください**常に**「デフォルトで」 'ObjectId'なく「文字列」で現在' _id'フィールドを持っています。 Mongooseはこのプロパティをデフォルトで 'id'としているので、Mongooseはこのプロパティを"オーバーライドする "ことを理解しておらず、' ObjectId'型にキャストしようとしています。そのタイプの"オーバーライド"する予定がある場合は、スキーマに '{" _id ":false}'をオプションとして指定する必要があります。すなわち、スキーマ({artist:String、title:String、_id:String}、{_id:false}) 'です。次に、マングースは代わりに定義された 'String'を使用することを知っています。 –
これはあなたの質問で定義する 'var playlist = [05,07,21,36,42]'に有効です。しかし、**実際のエラーメッセージ**は、実際には "カンマで区切られた値の文字列"を送信していることを示しています。だから代わりに配列に "文字列"を( '.split()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)してください。スキーマ内で 'id:String'を定義するのはもちろんですが、値は以下のようになっています:' 'id:String''はスキーマ内で' 'id:String''を定義します。実際には 'ObjectId'型です。 –