Node.js 如何使用Mongoose find执行地理空间查询
我正在创建一个包含两个实体的应用程序,Book和User 我在用户实体模式中添加了一个名为locationCoords的参数,该参数包含具有与用户本身相关的坐标的数组(首先是经度) 当我在找一本书时,我会尽量显示来自附近用户的结果。 因此,我想执行这样的查找查询Node.js 如何使用Mongoose find执行地理空间查询,node.js,mongodb,mongoose,mean-stack,Node.js,Mongodb,Mongoose,Mean Stack,我正在创建一个包含两个实体的应用程序,Book和User 我在用户实体模式中添加了一个名为locationCoords的参数,该参数包含具有与用户本身相关的坐标的数组(首先是经度) 当我在找一本书时,我会尽量显示来自附近用户的结果。 因此,我想执行这样的查找查询 exports.list = function(req, res) { if(req.user) { Book.find({'user.locationCoords': {'$near': req.user.lo
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'
}
});
谢谢
当做
毛里齐奥是
书
嵌入或引用的用户
?请记住,MongoDB只允许查询嵌入子文档上的字段,而不允许查询引用子文档上的字段。@Philipp这是在书籍用户的架构中:{type:schema.ObjectId,ref:'user'}我应该如何查询它?@Philipp如果是这样,我该如何执行我需要的查询?
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'
}
});