Java Spring Data MongoOperations:无法使用pull方法删除数组中的子文档

Java Spring Data MongoOperations:无法使用pull方法删除数组中的子文档,java,spring,mongodb,spring-boot,spring-data-mongodb,Java,Spring,Mongodb,Spring Boot,Spring Data Mongodb,以下是我的MongoDB文档的结构userActivity { "_id" : ObjectId("5e49569f93e956eeb28eb8a6"), "userId" : "123", "likes" : { "videos" : [ { "_id" : "abc", "title" : "This video is part of test setup", }

以下是我的MongoDB文档的结构
userActivity

{
  "_id" : ObjectId("5e49569f93e956eeb28eb8a6"),
  "userId" : "123",
  "likes" : {
      "videos" : [ 
          {
              "_id" : "abc",
              "title" : "This video is part of test setup",
          }
      ]
   }
}
我正在使用Spring数据
MongoOperations
来操作MongoDB集合。下面是从
likes
子文档中的
videos
数组中删除视频的代码。我已尝试根据用户的
用户ID
首先筛选文档。然后根据
videoId
将过滤器应用于
update
功能

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=1 modifiedCount=0 upsertedId=null


我很困惑,如果它能够匹配数组中的条目,为什么它不删除它?我缺少什么?

您使用的是哪个版本的spring data mongodb?我在当前主机上试用过,一切正常。@christofstrobl我使用的是
spring-data-mongodb-2.2.1.版本
。所以我发布的代码在你这方面起作用了吗?我使用的是当前的3.0快照,并尝试了2.2.x,两者都起作用了。您是否可以检查
查询服务器
是否返回多个结果?在这种情况下,
updateFirst
使用第一个来执行更新,如果
喜欢。videos
已经为空,
modifiedCount
设置为零,因为没有任何更改。@ChristophStrobl集合中只有一个文档。你能分享你的代码吗?比较它们可能会有所帮助。问题是你没有使用正确的字段名。语句
Criteria.where(“id”)是(videoId)
应该是
Criteria.where(“id”)是(videoId)