updateDescription.updatedFields в событии Change From mongoDB имеет значение null - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь просмотреть обновления в определенном поле status в потоке изменений MongoDB.

На странице Документация по изменениям поток изменений выведет этот документ:

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

Я всегда получаю все поля, но получаю updateDescription.updatedFields как ноль.

Вот код 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>

1 Ответ

0 голосов
/ 28 мая 2018

Я решил проблему, проблему, которую я тестировал с помощью «редактировать документ» в Robo. «Редактировать документ» не обновляет одно поле, он заменяет весь документ новым, имеющим тот же идентификатор.

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