当使用数值过滤时,Mongoose查询不适用于where()

时间:2013-09-26 05:52:10

标签: node.js mongoose

因此,在使用where子句时,使用mongoose时遇到问题。它们在我对字符串进行过滤时起作用,但不对数字进行过滤。

这是我的模型/架构:

// 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
});

这是数组'wheels'

中轮对象的示例
{
"_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 个答案:

答案 0 :(得分: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