2017-07-30 71 views
0

我有一組數字。我想將數組中的每個項目與集合中特定鍵的所有值進行比較。那可能嗎?在下面的例子中,我會把自己的只有有05,07,21,36和42的ID這些對象..但這個嘗試失敗 -如何遍歷數組以查詢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' ,

+0

所有MongoDB的文檔** **總是有存在的'_id'字段,「默認」是一個'ObjectId'而不是「字符串」。 Mongoose「別名」這個屬性默認爲'id',所以這裏的問題是Mongoose不理解你的意思是「覆蓋」這個屬性,並試圖「投」到ObjectId類型,並且數據是無效的爲那種類型。如果您打算「重寫」,那麼您需要將使用'{「_id」:false}'的模式作爲選項來告訴。即Schema({artist:String,title:String,_id:String},{_id:false})'。然後貓鼬知道使用定義的'String'來代替。 –

+0

這對您在問題中定義的'var playlist = [05,07,21,36,42]'有效。但**實際的錯誤信息**表明,實際上你正在發送一個「逗號分隔值串」。所以相反,你會['.split()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)將「字符串」轉換爲數組。 '.find({「_id」:{「$ in」:playlist.split(/,/)}})'當然**不**然後在模式中定義'id:String',因爲值是實際上是'ObjectId'類型。 –

回答