Mongodb Stitch 实时观看

Mongodb Stitch realtime watch

我打算实现的是某种 "live query" 功能。 到目前为止,我已经尝试使用 "watch" 方法。根据 documentation:

You can open a stream of changes that match a filter by calling collection.watch(delegate:) with a $match expression as the argument. Whenever the watched collection changes and the ChangeEvent matches the provided $match expression, the stream’s event handler fires with the ChangeEvent object as its only argument

将文档 ID 作为数组传递非常有效,但传递查询不起作用:

this.stitch.db.collection<Queue>('queues')
                        .watch({
                          hospitalId: this.activehospitalid
                         }));

我也试过这个:

this.stitch.db.collection<Queue>('queues')
                        .watch({
                           $match: {
                              hospitalId: this.activehospitalid
                              }
                            },
                          ));

这会在控制台上引发错误 "StitchServiceError: mongodb watch: filter is invalid (unknown top level operator: $match)"。目的是监视字段 "hospitalId" 与提供的值匹配的所有文档,或者有效地将查询过滤器传递给 watch() 方法。

经过长时间的搜索,我发现可以过滤,但查询需要不同的格式

this.stitch.db.collection<Queue>('queues')
                        .watch({
                           $or: [
                                 {
                                   "fullDocument.hospitalId": this.activehospitalid
                                 }
                                ]
                            },
                          ));

对于可能需要此信息的任何其他人,请注意查询中重要的 fullDocument 部分。我还没有找到很多与此相关的文档,但我希望它能有所帮助