【发布时间】:2014-03-16 03:03:12
【问题描述】:
我有一个 Mongo 查询,它在 Mongo 控制台中返回正确的结果,但是当对 Mongoose 模型执行相同的查询时,它返回一个空数组。
以下行无法正常工作:
query.facilities = {$in: facilities.split(',')};
声明我的猫鼬模型
// places
placeSchema = mongoose.Schema({
name: String,
category: [{ type: Schema.Types.ObjectId, ref: 'categories' }],
facilities: [{ type: Schema.Types.ObjectId, ref: 'facilities' }],
});
Place = mongoose.model('places', placeSchema);
// categories
categorySchema = mongoose.Schema({
name: String,
slug: String
});
Category = mongoose.model('categories', categorySchema);
facilitiesSchema = mongoose.Schema({
name: String,
});
Facility = mongoose.model('facilities', facilitiesSchema);
我的 /places 路线
app.get('/places', function(req, res){
var geo = req.query.geo.split(',');
if(geo.length !== 2) {
handleError('valid_geo_coords_required');
}
var limit = typeof req.query.limit !== 'undefined' ? req.query.limit : 0;
var category = req.query.category;
var facilities = req.query.facilities;
var query = {
loc: {$near: geo}
};
if(typeof category !== 'undefined') {
query.category = category;
}
if(typeof facilities !== 'undefined') {
query.facilities = {$in: facilities.split(',')}; <---- this causes the problem
}
console.log(query); // pasting this into the mongo console returns correct results
Place.find(query).limit(limit).populate('category').populate('facilities').exec(function(err, data){
if (err) return handleError(err);
res.json(data);
});
});
查询对象是:
{ loc: { '$near': [ '-3.188384', '55.94772' ] }, facilities: { '$in': [ '53012d6965b5e9a35efbb215' ] } }
这是我在控制台中执行的查询:
db.places.find({ loc: { '$near': [ '-3.188384', '55.94772' ] }, facilities: { '$in': [ '53012d6965b5e9a35efbb215' ] } })
并返回一个有效的文档。
Mongoose 有什么特定的东西会影响这个吗?
更新
似乎是这条线打破了它:
facilities: [{ type: Schema.Types.ObjectId, ref: 'facilities' }],
可能是因为它是一个 objectId 数组?
【问题讨论】: