У меня есть коллекция адресов с гео-полем (lng/lat). Теперь я хочу получить документы с уникальными парами geo lng/lat, чтобы заполнить экземпляр карты Google контактами. Поэтому, естественно, я не хочу, чтобы несколько контактов находились в верхней части друг друга, поэтому мне нужно получить уникальные пары 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);
Используя отдельный оператор, я могу легко получить все уникальные lng/lat. К сожалению, этот запрос возвращает массив lng/lat geo points, а не документы с полями. Поэтому я понятия не имею, какое название компании принадлежит той точке гео.
keystone.list('Venue').model.find().distinct('geo')
.exec(function(err, venues){
if(err){
throw err;
}
console.log(venues); // Array of lat/lng pairs
});
Как построить запрос таким образом я получаю реальные документы со всеми полями, где нет двух местах гео не являются одинаковыми?
спасибо @JohnnyHK. Отлично работает. Посмотрел документацию для переменной $$ ROOT. Не очень хорошо документировано. https://docs.mongodb.com/manual/reference/operator/aggregation/group/ – ChrisRich