由于环回连接器,我在将 mongoDB Atlas 集群从 4.2 迁移到 4.4 时遇到问题。
引入了 MongoDB 4.4 路径冲突限制 ( https://docs.mongodb.com/manual/release-notes/4.4-compatibility/#path-collision-restrictions ),因此某些查询无法使用 loopback-connector了。
我正在使用 loopback-connector-mongo 连接到 MongoDB 4.2 atlas 集群的 loopback3 上运行 nodejs 应用程序。
软件包版本:
"loopback": "3.28.0",
"loopback-connector-mongodb": "5.5.0"
将 dataModel 视为具有以下内容的对象:
data : {
id: 1,
total: {
day: [1,2,3],
month: [4,5,6],
year: [7,8,9]
}
}
以下查询将导致路径冲突错误:
data = await this.dataModel.findById({ id: this.Id, filter: { fields: ['total', 'total.month'] } });
如果您更新语法以遵循 MongoDB 4.4 要求,则查询将返回一个空对象:
data = await this.dataModel.findById({ id: Id, filter: { fields: ['total.month'] } });
我希望数据是这样的对象:
data = {total.month : [4,5,6]}
但它只是一个空对象:
data = {}
我知道该查询有效,因为如果我不使用连接器直接访问 MongoDB,则响应是正确的。
我究竟做错了什么?