私はジオフィールド(lng/lat)を持つアドレスのコレクションを持っています。 これで、Google Mapsインスタンスにピンを設定するために、固有の地理情報/緯度のペアを持つドキュメントを取得したいと考えています。当然、私は複数のピンがお互いの上に座ることを望んでいないので、ユニークなlng/latペアだけを取得する必要があります。ユニークなフィールドを持つドキュメントを見つける
var mongoose = require("mongoose"),
Schema = mongoose.Schema;
var VenueSchema = new Schema({
name: String,
street: String,
streetNumber: String,
postCode: String,
suburb: String,
state: String,
geo: Array, // [lng, lat]
});
var Venue = mongoose.model('Venue', VenueSchema);
distinct operatorを使用すると、すべてのユニークなlng/latを簡単に取得できます。残念ながら、このクエリは、フィールドを持つドキュメントではなく、lng/latジオポイントの配列を返します。だから私はビジネス名がどんな地理的ポイントに属しているか分からない。
keystone.list('Venue').model.find().distinct('geo')
.exec(function(err, venues){
if(err){
throw err;
}
console.log(venues); // Array of lat/lng pairs
});
2つのジオロケーションが同じでないすべてのフィールドで実際のドキュメントを取得するにはどうすればよいですか?
ありがとうございました@JohnnyHK。それは魅力のように働く。 $$ ROOT変数のドキュメントを参照してください。それほど十分に文書化されていない。 https://docs.mongodb.com/manual/reference/operator/aggregation/group/ – ChrisRich