Вы можете вызвать distinct()
метод на модели с помощью точечной нотации указать встроенный поле документа. Это будет запрашивать все различные значения для указанного поля через одну коллекцию и возвращает результаты в массиве:
var callback = function (err, result) {
if (err) { /* handle err */ };
console.log('unique mobile numbers', result);
};
Doctor.distinct("profile.contact.mobile", callback);
или
var query = Doctor.distinct("profile.contact.mobile");
query.exec(callback);
В MONGO оболочки, это будет эквивалентно:
var mobilenumbers = db.doctors.distinct("profile.contact.mobile");
Вы можете также использовать метод map()
на promise
возвращается из запроса как еще один способ, чтобы получить результаты в массиве:
var promise = Doctor.find({ }).select("profile.contact.mobile").exec();
promise.then(function (results) {
var numbers = results.map(function (m) {
return m.profile.contact.mobile;
});
console.log(numbers);
}).then(null, function (err) {
console.log(err);
});
Монго оболочки эквивалентная операция использует метод map()
курсора и следующим образом:
var mobilenumbers = db.doctors.find({}, {"profile.contact.mobile": 1})
.map(function (m){
return m.profile.contact.mobile;
});
'Doctor.find ({} , 'contact.mobile' ...) 'должен возвращать то, что вы хотите. – Svenskunganka