我使用的是waterline,并且我使用mongoimport命令导入了数据库。我使用 native 驱动程序连接到 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:无法读取未定义的属性“id”
我能够通过缩小数组来阻止错误。这并不是为了强制用户批量查询,但我不知道如何解决这个问题。
作为一种解决方法,聚合框架 $match 阶段似乎没有任何问题。
collection.aggregate([{$match: {$or: arrayResults}}}]).toArray().then(....
这个问题是我在查询中没有使用“id”,所以我不明白出了什么问题。
最佳答案
这个问题归结为与node.js驱动程序的兼容性。
在探索了多种编写代码的途径后发现了问题。以及遇到不一致的错误和只是简单地卡在应用程序中。
我验证 Node 驱动程序的版本是 2.0.44。我的 mongodb 数据库版本是 3.2。 mongoDB 明确指出,nodejs 驱动程序与 3.2 的兼容性 >= 2.1.0。
我很惊讶没有人出现提出建议,因为考虑到发生的错误与我数据库中的值完全不一致,这是 mongoDB 的专家。
关于node.js - 使用 $or 时出现 MongoError : TypeError: Cannot read property 'id' of undefined,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35931001/