MongoD: Как обновить определенное поле документа в коллекции? - PullRequest
1 голос
/ 25 октября 2019

У меня есть коллекция заданий в MongoDB, и в этой коллекции есть поле в документах, названное как applyUser. Я хочу обновить это поле, когда новый пользователь подает заявку на эту работу. Так что в основном это поле хранит идентификаторы всех пользователей, подающих заявку на эту работу.

Я использую функцию findOneAndUpdate (), но не могусделайте это.

Job.findOneAndUpdate({ _id: req.params.id }, { $set: { appliedUser: 
req.user.id } }, function(err, job) {
    console.log(job);
})

и вот моя схема:

const jobSchema = new Schema({
date: { type: Date, default: Date() },
expirydate: { type: Date, required: true },
name: { type: String, required: true },
companydetails: { type: String, required: true },
address: { type: String, required: true },
role: { type: String, required: true },
city: { type: String, required: true },
minsalary: { type: Number, required: true },
maxsalary: { type: Number, required: true },
skills: { type: Array, required: true },
minex: { type: Number, required: true },
appliedUser: [{ type: Schema.Types.ObjectId, ref: 'users', unique: 
true }],
user: { type: String, required: true }

})

Массив документа не обновляется. Я не могу найти ошибки.

1 Ответ

4 голосов
/ 25 октября 2019

Похоже, вам нужно $ addToSet . Пример:

Job.findOneAndUpdate({ _id: req.params.id }, { $addToSet: { appliedUser:  req.user.id } }, function(err, job) {
  console.log(job);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...