Я пытаюсь просмотреть обновления в определенном поле 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>