2013-09-26 58 views
0

所以我在使用where子句時使用mongoose進行查詢時遇到了問題。他們工作時,我過濾字符串,但不是數字。Mongoose查詢無法與where()進行數值過濾時使用

這是我的模型/方案:

// Schema 
var Wheel = new mongoose.Schema({ 
    name: String, 
    method: String, 
    size: Number, 
    width: Number, 
    weight: Number 
}); 


// Model 
var WheelModel = mongoose.model('Wheel', Wheel); 

這個查詢的工作原理:

var query = WheelModel.find(); 

query.where('method').equals('Cast/Spun'); 
query.limit(10); 

query.exec(function (err, wheels) { 
    // wheel objects are returned 
}); 

這是陣列內部的輪體的一例 '輪子'

{ 
"_id": "523de98b263add11a8d4fc4a", 
"name": "AME Circlar RS", 
"weight": 18.1, 
"width": 7, 
"method": "Cast/Spun", 
"size": 15 
} 

下面的這個查詢返回[],如果我按大小,寬度和重量進行過濾,並且對於任何數字,則這樣做會這樣做

var query = WheelModel.find(); 

query.where('size').equals(15); 
query.limit(10); 

query.exec(function (err, wheels) { 
    if (!err) { 
     return res.send(wheels); 
    } else { 
     return console.log(err); 
    } 
}); 

我也曾嘗試

query.where('size', 15); 
query.where('size', '15'); 
var query = WheelModel.find({ size: 15}); 

如果我去:

query.where('size').ne(15); 

然後我得到的返回結果,但它們將包括值,其中大小爲15所以我懷疑我有一些類型問題,我只是不知道。任何幫助將是明智的!

+1

您可以驗證並告訴我們MongoDB中字段'size'的類型嗎? –

+0

他們是字符串。我沒有檢查,但我知道這是問題。我記得因爲我在模式中定義的類型引起的貓鼬拋出錯誤,所以我只是假設貓鼬會拋出錯誤......錯誤的假設。 –

+0

在[Schema Types](http://mongoosejs.com/docs/schematypes.html)中,查看示例並特別檢查「age」字段或此特定[示例](http://mongoosejs.com/docs /api.html#schema_number_SchemaNumber-max)在**'Number' **類型字段上。希望這結束您的搜索解決方案..快樂的編碼;) –

回答

1

嘗試用相同的查詢,即query.where('size').equals(15)

var Wheel = new mongoose.Schema({ 
    name: String, 
    method: String, 
    size: { type: Number }, 
    width: { type: Number}, 
    weight: { type: Number } 
}); 

欲瞭解更多信息,下面的模式應該爲你工作(根據您的意見理解),在API文檔檢查此Schema Types

相關問題