0

我开发了一个本地版本的社区 MongoDB (v4.4) 的应用程序。现在我已经连接到 Mongo Atlas(它正在运行 v 4.2)。

我正在运行 watch 命令来创建变更流。虽然使用我的本地设置一切正常,但使用 atlas 我得到一个错误

MongoError: Error validating $match value for change streams. err=ns field has bson.D value that is not string or valid MongoDb RegEx: Error parsing value [{$in [somestring1 somestring2 somestring3]}] to RegEx: Must specify $regex field

查询,resp。观看管道是

Database.watch([
    {
        "$match":{
                "ns.coll":{
                    "$in":["somestring1","somestring2","somestring3"]
                }
            }
        }
    ],
    {fullDocument:"updateLookup"}
)

我已将其更改为$or替代方案:


Database.watch([
        {
            "$match":{
                "$or":[
                    {"ns.coll":"somestring1"},
                    {"ns.coll":"somestring2"},
                    {"ns.coll":"somestring3"}
                ]
            }
        }
    ],
    {fullDocument:"updateLookup"}
)

这可以正常工作。这Database是来自 nodejs 驱动程序的连接。该错误是调用手表后来自 atlas 服务器的立即响应。

该错误还具有以下属性:

  ok: 0,
  code: 8000,
  codeName: 'AtlasError'

有什么问题?我可以/应该怎么做?虽然解决方法有效,但我想它的性能较低。

4

0 回答 0