Обновление вложенного массива Mongo с условиями - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно обновить поля userAns, ansBody нижеупомянутой коллекции. Где условия будут иметь userId, userQuestions._id и QuesId.

{ 
"_id" : ObjectId("5b9624b56b0fe824352e887a"), 
"userId" : ObjectId("5b8fd089ee2e6c07765ba024"), 
"userQuestions" : [
    {
        "testStatus" : NumberInt(1), 
        "_id" : ObjectId("5b9624b56b0fe824352e887f"), 
        "questionsId" : [
            {
                "_id" : ObjectId("5b9624b56b0fe824352e8885"), 
                "quesId" : ObjectId("5b94f1e97b8adc3d46854518"), 
                "userAns" : "", 
                "ansBody" : "", 
                "ansStatus" : ""
            }

Что я пробовал

  let paramObj={
  userId:"5b8fd089ee2e6c07765ba024",
  quesSetId:"5b9624b56b0fe824352e887b",
  quesId:"5b9619311d9b1b1834f2cd23",
  ansId:"5b9619311d9b1b1834f2cd27",
  ansBody:"abc123"
}
let questionSet=await QuestionSet.update({userId:paramObj.userId,"userQuestions._id":paramObj.quesSetId},
  { $set: {"userQuestions.$[t].questionsId.$[u].ansBody": paramObj.ansBody} },
  { arrayFilters: [ { "t.quesId":paramObj.quesId },{"u.quesId": paramObj.quesId} ] } );
Событие

, хотя оно дает мне выходные данные в измененном виде, документ не обновляется.

1 Ответ

0 голосов
/ 11 сентября 2018

Вы должны передать идентификатор объекта как тип ObjectId.

Для этого, если вы используете mongoose, преобразуйте строку в тип объекта mongoose, используя.

mongoose.Types.ObjectId('id');

Я думаю, что это решит вашу проблему.

https://mongoosejs.com/docs/api.html#types-objectid-js

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