gpt4 book ai didi

javascript - 如何在 Meteor javascript 文件中使用 MongoDB mapReduce 函数?

转载 作者:行者123 更新时间:2023-11-30 07:56:38 25 4
gpt4 key购买 nike

我目前正在从事 GeoSpatial 项目,我使用 MongoDB 作为数据库,使用 Meteor 创建我的应用程序。我在 MongoDB 中对空间数据运行了一些查询(使用 mapReduce),我想将此代码(查询)放在 Meteor(javascript 文件)上。我对此做了一些研究,但我仍然有问题。我不知道如何在 meteor 中编写 mapReduce 函数。

这是我在 MongoDB 中的 mapReduce 代码:

var map1 = function() {

var px =-83.215;
var py =41.53;

if(this.geometry.minlon<=px && px<=this.geometry.maxlon && this.geometry.minlat<=py && py<=this.geometry.maxlat)
{emit(this._id, 1);}

}

var reduce1 = function(key, value) {
return Array.sum(value)
}

db.C1DB.mapReduce(map1, reduce1, {
out: "CollectionName"
})

最佳答案

基本上您可以通过两种类似的方式来完成:

下面是如何在没有包的情况下执行此操作的工作示例:

C1DB = new Mongo.Collection('c1db');
CollectionName = new Mongo.Collection('CollectionName');

Meteor.methods({
doMapReduce: function () {
var mapFn = function () {
var px = -83.215;
var py = 41.53;

if (this.geometry.minlon <= px && px <= this.geometry.maxlon && this.geometry.minlat <= py && py <= this.geometry.maxlat) {
emit(this._id, 1);
}
};

var reduceFn = function (key, value) {
return Array.sum(value)
};

var rawC1DB = C1DB.rawCollection();

// convert mapReduce to synchronous function
var syncMapReduce = Meteor.wrapAsync(rawC1DB.mapReduce, rawC1DB);

// CollectionName will be overwritten after each mapReduce call
syncMapReduce(mapFn, reduceFn, {
out: "CollectionName"
});

return CollectionName.find({}).fetch();
}
});

关于javascript - 如何在 Meteor javascript 文件中使用 MongoDB mapReduce 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com