私はMongoDBの中に地理空間データを操作および増分のMapReduceを使用してデータから照会しようとしています。(文字列データ(JSON)に対して増分mapReduceを実行するにはどうすればよいですか?
私のコレクションは、次のプロトタイプの文書が含まれています(私は互いに交差している領域を見つけようとしています)私のMapReduceコードで
{
"_id" : ObjectId("577be972e0977965a62e3264"),
"value" : {
"Name" : "43456",
"type" : "zip",
"bbox" : [
-82.856831,
41.62814,
-82.793069,
41.724549
]
}
}
私はお互いに交差を持っている分野を見つけようとしていますので、私が使用している「増分のMapReduce」を行うには:BBOXは、経度と緯度)です。したがって、私はreduce関数で配列を定義しており、この配列にすべての領域を傍受する必要があります。 (マップ関数では、すべてのコレクションを1つのドキュメント[emit(1、this.value)]に入れて入れ子になったforループを使って検索します)。
このコードをMongoDBで実行した場合、reduce関数の出力はnullになります。私が推測しているのは、コードのインクリメンタルな部分が間違っているかもしれないが、それでもなおわかりません。一方、それが本当に間違っている場合、私はそれをどのように修正することができないのか分かりません。ここ
は私のMapReduceコードです:
var Mapper=function(){
var key=1;
var value={
id: this._id,
Name: this.value.Name,
Type: this.value.type,
Bbox: this.value.bbox
};
emit (key, value);
}
var Reducer=function(key, val){
var reduceObj={
id:0,
Name: 0,
Type: 0,
Bbox: 0};
for(var i=0; i<(val.lenght)-1; i++)
{ for(var j=1; j<val.lenght; j++)
{
if((val[i].Type=="zip") && (val[j].Type=="water")&&
(((val[i].Bbox[0]==val[j]. Bbox[0] || val[i].Bbox[0]== val[j].Bbox[2] || val[i].Bbox[2] == val[j].Bbox[0] || val[i].Bbox[2] == val[j].Bbox[2])||(val[i].Bbox[0] <= val[j].Bbox[0] && val[i].Bbox[0] <= val[j].Bbox[2]) ||(val[i].Bbox[0] <= val[j].Bbox[0] && val[i].Bbox[0] <= val[j].Bbox[2]))&&((val[i].Bbox[1] == val[j].Bbox[1] || val[i].Bbox[1] == val[j].Bbox[3] || val[i].Bbox[3] == val[j].Bbox[1] || val[i].Bbox[3] == val[j].Bbox[3])||(val[i].Bbox[1] <= val[i].Bbox[1] && val[i].Bbox[1] <= val[j].Bbox[3]) ||(val[i].Bbox[1] <= val[j].Bbox[1] && val[i].Bbox[1] <= val[j].Bbox[3]))))
{
reduceObj.id=val.id;
reduceObj.Name=val.Name;
reduceObj.Type=val.Type;
reduceObj.Bbox=val.Bbox;
}
}}
return reduceObj;
}
db.ALL.mapReduce(Mapper, Reducer, {
out: "Intersects"})
私は本当に誰かが私を助けている場合
の答えを得るために役立つことがあり、このリンクhttps://docs.mongodb.com/manual/tutorial/perform-incremental-map-reduce/ をフォローしてくださいできいただければ幸いです現在の形の質問は、おそらく間もなく開催されるでしょう。少なくともコードの何が間違っていて、どのような出力が期待されているかを記述してください。 –
私はそれを編集して問題を追加しました。ご不便をおかけして申し訳ありません、ご意見ありがとうございます。 –