Mongodb 如何返回距离地理位置最近的文档?
我想显示最靠近用户在meteor中输入的地理位置的帖子 用户在addpost模板上添加帖子:Mongodb 如何返回距离地理位置最近的文档?,mongodb,geolocation,meteor,latitude-longitude,Mongodb,Geolocation,Meteor,Latitude Longitude,我想显示最靠近用户在meteor中输入的地理位置的帖子 用户在addpost模板上添加帖子: //events.js (this code works nicely) Template.addpost.events ({ 'click .add': function (evt, tmpl) { var title = tmpl.find('.title').value; var lat = tmpl.find('.address-lat')
//events.js (this code works nicely)
Template.addpost.events ({
'click .add': function (evt, tmpl) {
var title = tmpl.find('.title').value;
var lat = tmpl.find('.address-lat').value;
var long = tmpl.find('.address-long').value;
var loc = lat , long
Post.insert({title:title,loc:loc});
})
//main.js (this works)
Post = new Meteor.Collection("posts");
Template.main.posts = function() {
return Post.find();
}
(this works)
{{#each posts}}
<tr>
<td>{{title}}</td>
</tr>
{{/each}}
然后使用以下代码显示在主页上:
//events.js (this code works nicely)
Template.addpost.events ({
'click .add': function (evt, tmpl) {
var title = tmpl.find('.title').value;
var lat = tmpl.find('.address-lat').value;
var long = tmpl.find('.address-long').value;
var loc = lat , long
Post.insert({title:title,loc:loc});
})
//main.js (this works)
Post = new Meteor.Collection("posts");
Template.main.posts = function() {
return Post.find();
}
(this works)
{{#each posts}}
<tr>
<td>{{title}}</td>
</tr>
{{/each}}
和html:
//events.js (this code works nicely)
Template.addpost.events ({
'click .add': function (evt, tmpl) {
var title = tmpl.find('.title').value;
var lat = tmpl.find('.address-lat').value;
var long = tmpl.find('.address-long').value;
var loc = lat , long
Post.insert({title:title,loc:loc});
})
//main.js (this works)
Post = new Meteor.Collection("posts");
Template.main.posts = function() {
return Post.find();
}
(this works)
{{#each posts}}
<tr>
<td>{{title}}</td>
</tr>
{{/each}}
(这很有效)
{{{#每个帖子}
{{title}}
{{/每个}}
现在我的问题是:如何筛选这些帖子,并显示用户指定纬度和经度的最接近的100?
(mondodb代码可以在这里找到:)文档建议
$near
从最近到最远对结果进行排序。因此,您可以在服务器(发布时)或客户端(如果您已经拥有所有记录)上执行以下操作:
Template.main.posts=函数(){
var totalRecords=Post.find().count();
回程邮递({
loc:{
$near:{
$geometry:{
键入:“点”,
坐标:[userLocLong,userLocLat]
}
}
}
}, {
限制:100//仅返回最接近的100个结果
}
);
};
来自OP的注释:
//events.js (this code works nicely)
Template.addpost.events ({
'click .add': function (evt, tmpl) {
var title = tmpl.find('.title').value;
var lat = tmpl.find('.address-lat').value;
var long = tmpl.find('.address-long').value;
var loc = lat , long
Post.insert({title:title,loc:loc});
})
//main.js (this works)
Post = new Meteor.Collection("posts");
Template.main.posts = function() {
return Post.find();
}
(this works)
{{#each posts}}
<tr>
<td>{{title}}</td>
</tr>
{{/each}}
代码实际上是有效的。刚刚发现您需要将此格式的坐标添加到posts
集合:
Post.insert({
loc: {
type: "Point",
coordinates: [foo, bar],
}
});
不为我工作。应用程序崩溃:/。=>退出代码:8=>您的应用程序正在崩溃。正在等待文件更改。=>修改--重新启动。@GeriTol恐怕没有足够的信息开始调试。