Mongodb 如何返回距离地理位置最近的文档?

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')

我想显示最靠近用户在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').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恐怕没有足够的信息开始调试。