如何使用Mongoose find来执行地理空间查询

时间:2014-11-15 21:31:39

标签: node.js mongodb mongoose mean-stack

我正在创建一个包含两个实体的应用程序,Book和User。

我在User实体模式中添加了一个名为locationCoords的参数,该参数包含与用户本身相关的坐标的数组(经度优先)。

locationCoords: {
    type: [Number],
    index: '2d'
}

在寻找图书时,我会尝试在附近显示来自用户的结果。 所以,我想执行像这样的查找查询

exports.list = function(req, res) {
    if(req.user) {
        Book.find({'user.locationCoords': {'$near': req.user.locationCoords}}).sort('-created').populate('user', 'displayName locationName locationCoords').exec(function(err, books) {
            if (err) {
                return res.status(400).send({
                    message: errorHandler.getErrorMessage(err)
                });
            } else {
                res.jsonp(books);
            }
        });
    }
}

我创建了附近位置的条目,但查询不会返回任何结果。 有什么建议吗?

我正在使用下面的架构

var BookSchema = new Schema({
    title: {
        type: String,
        default: '',
        required: 'Please fill Book title',
        trim: true
    },
    language: {
        type: String,
        default: '',
        required: 'Please fill Book language',
        trim: true
    },
    description: {
        type: String,
        default: '',
        trim: true
    },
    image: {
        type: String,
        default: '',
        required: 'Please fill Book image',
        trim: true
    },
    created: {
        type: Date,
        default: Date.now
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

由于 问候 莫里吉奥

0 个答案:

没有答案