MongoDB Mon goose Как удалить объект из массива - PullRequest
0 голосов
/ 30 мая 2020
var UserSchema = new mongoose.Schema({
   //Irrelevant code
   profile:
   { 
    requests: [{ sender: String, id: String,  hasSelected: Boolean, value: Boolean}]
   }
});

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

User.updateOne({ id: user.id },
              { "$pull": { "profile": { "requests": { "id": targetId } } }  },
              { "multi": true },
              function(err,status) {
                if(err){console.log("Could not delete the friend request");}
                else{ 
                  console.log("Sucessfully deleted friend request from: " + user.name);}
               }
              );

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

1 Ответ

0 голосов
/ 30 мая 2020

попробуйте $ elemMatch, чтобы удалить указанный c объект.

 User.updateOne(
 { id: user.id },
 { $pull: { "profile.requests": { $elemMatch: { id: targetId } } } },
 { multi: true },
 function (err, status) {
 if (err) {
  console.log("Could not delete the friend request");
  } else {
  console.log("Sucessfully deleted friend request from: " + user.name);
 }
 }
 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...