Node.js MongoError:TypeError:无法读取属性';id';在使用$or时,未定义的
我使用的是waterline,我使用mongoimport命令导入了数据库。我使用本机驱动程序连接到mongo,调用.find和.aggregate 使用$或查找多个记录时,使用前一组查询的结果。数组看起来像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
[{"\"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”},
不带\”
?这就是他们在数据库中的键看起来的样子,所以现在必须这样。你真的认为这会损坏数据库吗?