我开发了一个本地版本的社区 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'
有什么问题?我可以/应该怎么做?虽然解决方法有效,但我想它的性能较低。