java - 来自 mongoDB 的更改事件中的 updateDescription.updatedFields 为空

标签 java spring mongodb maven

我正在尝试查看 MongoDB 更改流中特定字段 status 的更新。

来自Change Event documentation页面,更改流将输出此文档:

{
   _id : { <BSON Object> },
   "operationType" : "<operation>",
   "fullDocument" : { <document> },
   "ns" : {
      "db" : "<database>",
      "coll" : "<collection"
   },
   "documentKey" : { "_id" : <ObjectId> },
   "updateDescription" : {
      "updatedFields" : { <document> },
      "removedFields" : [ "<field>", ... ]
   }
}

我总是获取所有字段,但将 updateDescription.updatedFields 设为 null。

这是我正在使用的 Java 代码

MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
MongoDatabase database = mongoClient.getDatabase("db");
MongoCollection<org.bson.Document> collection = database.getCollection("collection");
List<Bson> pipeline = Collections.singletonList(Aggregates.match(Filters.and(
        Document.parse("{'fullDocument.status':  { $in: [ 'DONE','ERROR'] }}"),
        Filters.exists("updateDescription.updatedFields.status",true),
        Filters.in("operationType", ("replace")))));

MongoCursor<ChangeStreamDocument<Document>> cursor = collection.watch(pipeline).iterator();

我在项目中使用这些依赖项

<mongo.java.driver>3.6.3</mongo.java.driver>

<spring.data.mongo.version>1.10.10.RELEASE</spring.data.mongo.version>

最佳答案

我解决了这个问题,我在 Robo 上使用“编辑文档”测试的问题。 “编辑文档”不会更新一个字段,它会用具有相同 ID 的新文档替换所有文档。

关于java - 来自 mongoDB 的更改事件中的 updateDescription.updatedFields 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50370895/

相关文章:

java - Tomcat 8 忽略 CORS 过滤器(web.xml、代码内等)

java - Android ActionBar 找不到资源

c# - 将加密代码从 Java 移植到 C# 时存在一些等价问题

java - Spring JPA 复合键 : This class does not define an IdClass

java - 保存新实体时在 ManyToOne/OneToMany 关系上创建重复条目

mongodb - MongoDB 如何选择候选计划

java - ActionMessages 如何支持 struts 2 中的国际化?

java - Spring异常: org. springframework.expression.spel.SpelEvaluationException : EL1004E:(pos 8): Method call: Method retrieveRecords(java. util.Vector)

javascript - Mongoose 模型 - TypeError : Account is not a constructor

angularjs - 使用 mongodb 嵌入集合