Запросы с использованием Mongoose для всех значений указанного вложенного объекта - PullRequest
0 голосов
/ 04 апреля 2019

В настоящее время я пытаюсь запросить коллекцию MongoDB с помощью Mongoose, и у меня возникают проблемы при попытке преобразовать этот запрос в полезный запрос Mongoose.

Запрос CLI MongoDB: db.events.find({}, {'first.points': 1, '_id': 0}).

Это работает нормально и возвращает то, что я ожидал, когда я запустил это в командной строке, я попробовал несколько методов преобразования этого в запрос Mongoose, мои попытки до сих пор:

Попытка #1

Events.find({}).populate('first').exec(function(err, events){
    if(err) { console.log(err) }
    console.log(events);
});

Это не работает и выдает ошибку Cast to ObjectId failed for value "10" at path "_id" for model "Event" при запуске сервера узла.

Попытка # 2

Event.find({'first.points': "10"}).populate('first').exec(function(err, events)

Это не выдает никаких ошибок, и возвращает значения, которые я ожидал, однако я пытаюсь вернуть все значения first.points для всех событий, и я не могу этого сделать.

Попытка # 3

Event.find({'first.points': "$all"}).populate('first').exec(function(err, events)

Это также не работает, и это была моя последняя попытка решить эту проблему, на этот раз снова выдается ошибка, говорящая Cast to number failed for value "$all" at path "first.points" for model "Event"

Я не уверен, что еще можно попробовать для этого, я не уверен, какчтобы вернуть все значения без указания того, что искать.

РЕДАКТИРОВАТЬ

Модель для событий включена ниже

var eventsSchema = new mongoose.Schema({
   name: String, // The event name, with data type String
   date: Date, // Date with data type Date
   first: {
       points: Number, // The points awarded to the first place with data type Number
       house: String
   },
   second: {
       points: Number,
       house: String
   },
   third: {
       points: Number,
       house: String
   },
   fourth: {
       points: Number,
       house: String
   }
});

Любая помощьценится.

1 Ответ

0 голосов
/ 04 апреля 2019

Кредит Нага - эликсир - банка за этот ответ.

Event.find({}, {'first.points': 1, '_id': 0}, function(err, events) {...})

Этот код возвращает нужные мне значения без ошибок и в правильном формате.

Примечание. Для ясности я преобразовал это из функции стрелки. Функция стрелки здесь Event.find({}, {'first.points': 1, '_id': 0}, (err, events) => {...})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...