如何在Sping Boot 中迭代MongoDB变更流?

elcex8rz  于 2022-12-12  发布在  Go
关注(0)|答案(1)|浏览(158)

我已经阅读了无数关于MongoDB Change Streams的文章和代码示例,但我仍然无法正确设置它。我正在尝试监听MongoDB中的特定集合,无论何时插入、更新或删除文档,我都想做些什么。
我试过了
第一个
这就是我目前所拥有的,一切都很好,直到for循环出现三个错误:
1.在***'下面有一条红线,表示('***',表示unexpected token
1.***':'***下面有一条红线,表示';' expected
1.***'changeStream)'***下有一条红线,表示unknown class: 'changeStream'

8aqjt8rx

8aqjt8rx1#

首先,你应该把你的代码放在类方法中,而不是类体中。其次,-ChangeStreamIterable<Document>迭代器元素是ChangeStreamDocument<Document>而不是Document
总结一下:

public class MongoDBChangeStream {

    public void someMethod() {

        // connect to the local database server
        MongoClient mongoClient = MongoClients.create("db uri goes here");

        // Select the MongoDB database
        MongoDatabase database = mongoClient.getDatabase("MyDatabase");

        // Select the collection to query
        MongoCollection<Document> collection = database.getCollection("teams");

        // Create pipeline for operationType filter
        List<Bson> pipeline = Arrays.asList(
                Aggregates.match(
                        Filters.in(
                                "operationType",
                                Arrays.asList("insert", "update", "delete")
                        )));

        // Create the Change Stream
        ChangeStreamIterable<Document> changeStream = collection.watch(pipeline)
                .fullDocument(FullDocument.UPDATE_LOOKUP);

        // Iterate over the Change Stream
        for (ChangeStreamDocument<Document> changeEvent : changeStream) {
            // Process the change event here
        }
    }
}

相关问题