Node.js MongoError:TypeError:无法读取属性';id';在使用$or时,未定义的

Node.js MongoError:TypeError:无法读取属性';id';在使用$or时,未定义的,node.js,mongodb,waterline,Node.js,Mongodb,Waterline,我使用的是waterline,我使用mongoimport命令导入了数据库。我使用本机驱动程序连接到mongo,调用.find和.aggregate 使用$或查找多个记录时,使用前一组查询的结果。数组看起来像 [{"\"ProductID\"": "76543"},{"\"ProductID\"": "74632"}, {"\"ProductID\"": "76534",...n}] 不要在意密钥,这是一个临时设置,因为文件中有一个控制字符用于将csv转换为json,然后mongoimport

我使用的是waterline,我使用mongoimport命令导入了数据库。我使用本机驱动程序连接到mongo,调用.find和.aggregate

使用$或查找多个记录时,使用前一组查询的结果。数组看起来像

[{"\"ProductID\"": "76543"},{"\"ProductID\"": "74632"}, {"\"ProductID\"": "76534",...n}]
不要在意密钥,这是一个临时设置,因为文件中有一个控制字符用于将csv转换为json,然后mongoimporting新文件

我应该能够对数组执行以下查询

collection.find({$or: arrayResults }).toArray().then(function(result)...
然后我收到错误:MongoError:TypeError:无法读取未定义的属性“id”

我可以通过缩小数组来阻止错误。这并不是为了强迫用户批量查询,但我不知道如何解决这个问题

作为一种变通方法,聚合框架$match阶段似乎没有任何问题

collection.aggregate([{$match: {$or: arrayResults}}}]).toArray().then(....

这个问题是我在查询中没有使用“id”,所以我不明白出了什么问题

这个问题归根结底是与node.js驱动程序的兼容性

在探索了编写代码的多种途径后,找到了问题所在。以及在应用程序中遇到不一致的错误和简单的挂起

我验证了节点驱动程序的版本是2.0.44。对于mongodb,我的DB版本是3.2。mongoDB明确指出nodejs驱动程序与3.2的兼容性大于等于2.1.0


我很惊讶没有人会提出这是mongoDB的专家提出的,因为所发生的错误与我数据库中的值完全不一致

试试
{“ProductID”:“74632”},
不带
\”
?这就是他们在数据库中的键看起来的样子,所以现在必须这样。你真的认为这会损坏数据库吗?