MongoError: TypeError: Cannot read property 'id' of undefined, while using $or
MongoError: TypeError: Cannot read property 'id' of undefined, while using $or
我正在使用 waterline,我使用 mongoimport 命令导入了数据库。我使用本机驱动程序连接到 mongo,调用 .find 和 .aggregate。
当使用 $or 查找包含前一组查询结果的多条记录时。该数组看起来像
[{"\"ProductID\"": "76543"},{"\"ProductID\"": "74632"}, {"\"ProductID\"": "76534",...n}]
不要在意 KEY,这是临时设置,因为文件中的控制字符用于将 csv 转换为 json,然后 mongo 导入新文件。
我应该能够使用数组执行以下查询。
collection.find({$or: arrayResults }).toArray().then(function(result)...
然后我收到错误:MongoError: TypeError: Cannot read 属性 'id' of undefined
我可以通过缩小数组来阻止错误。这并不是为了强制其用户批量查询而设计的,但我不确定如何解决该问题。
作为解决方法,聚合框架 $match 阶段似乎没有任何问题。
collection.aggregate([{$match: {$or: arrayResults}}}]).toArray().then(....
这个问题是我在查询中没有使用 "id",所以我不明白哪里出了问题。
这个问题归结为与 node.js 驱动程序的兼容性。
在探索了编写代码的多种途径后发现了问题。以及遇到不一致的错误并且只是简单地挂在应用程序中。
我验证了节点驱动程序的版本是 2.0.44。 mongodb 我的数据库版本是 3.2。 mongoDB 明确指出 nodejs 驱动程序与 3.2 的兼容性 >= 2.1.0。
考虑到发生的错误与我的数据库中的值完全不一致,
我很惊讶没有人出现建议这是 mongoDB 的专家。
我正在使用 waterline,我使用 mongoimport 命令导入了数据库。我使用本机驱动程序连接到 mongo,调用 .find 和 .aggregate。
当使用 $or 查找包含前一组查询结果的多条记录时。该数组看起来像
[{"\"ProductID\"": "76543"},{"\"ProductID\"": "74632"}, {"\"ProductID\"": "76534",...n}]
不要在意 KEY,这是临时设置,因为文件中的控制字符用于将 csv 转换为 json,然后 mongo 导入新文件。
我应该能够使用数组执行以下查询。
collection.find({$or: arrayResults }).toArray().then(function(result)...
然后我收到错误:MongoError: TypeError: Cannot read 属性 'id' of undefined
我可以通过缩小数组来阻止错误。这并不是为了强制其用户批量查询而设计的,但我不确定如何解决该问题。
作为解决方法,聚合框架 $match 阶段似乎没有任何问题。
collection.aggregate([{$match: {$or: arrayResults}}}]).toArray().then(....
这个问题是我在查询中没有使用 "id",所以我不明白哪里出了问题。
这个问题归结为与 node.js 驱动程序的兼容性。
在探索了编写代码的多种途径后发现了问题。以及遇到不一致的错误并且只是简单地挂在应用程序中。
我验证了节点驱动程序的版本是 2.0.44。 mongodb 我的数据库版本是 3.2。 mongoDB 明确指出 nodejs 驱动程序与 3.2 的兼容性 >= 2.1.0。
考虑到发生的错误与我的数据库中的值完全不一致,
我很惊讶没有人出现建议这是 mongoDB 的专家。