Spring Data MongoOperations: не удается удалить вложенный документ в массиве методом pull - PullRequest
0 голосов
/ 16 февраля 2020

Ниже приведена структура моего документа MongoDB userActivity.

{
  "_id" : ObjectId("5e49569f93e956eeb28eb8a6"),
  "userId" : "123",
  "likes" : {
      "videos" : [ 
          {
              "_id" : "abc",
              "title" : "This video is part of test setup",
          }
      ]
   }
}

Я использую Spring Data MongoOperations для управления коллекциями MongoDB. Ниже приведен код для удаления видео из массива videos в поддокументе likes. Я попытался сначала отфильтровать документ в соответствии с userId пользователя. А затем применить фильтр к функции update согласно videoId.

public UpdateResult removeVideoLike(String videoId, String userId) {
  Query queryUser = Query.query( Criteria.where("userId").is(userId) );
  Query queryVideo = Query.query( Criteria.where("id").is(videoId) );
  Update update = new Update().pull("likes.videos", queryVideo );
  return mongoOperations.updateFirst( queryUser , update, UserActivity.class );
}

. Это работает без ошибок, но запись не удаляется. UpdateResult имеет следующие значения

matchedCount = 1ifiedCount = 0 upsertedId = null

Я в замешательстве, если он может соответствовать записи в массиве, почему это не удаляет это? Чего мне не хватает?

...