node.js - 使用 $or 时出现 MongoError : TypeError: Cannot read property 'id' of undefined,

标签 node.js mongodb waterline

我使用的是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/

相关文章:

mongodb - 在 MongoDB 中克隆一个集合

node.js - $facet 如何提高 $lookup 的性能

java - 使用java在Mongodb中插入文档

node.js - Sails Waterline 大文件 PostgreSQL

javascript - 使用水线的 sails.js 中的 ER_BAD_FIELD_ERROR

javascript - 将 json 对象从 php 传递到 javascript

node.js - 使用 gitflow、Jenkins 和 Node 时如何自动更改 package.json 版本?

javascript - 在 sinon.js 中 stub 和/或模拟一个类?

javascript - 带水线的 Sailsjs 地理空间解决方案

javascript - headless 浏览器图像质量 - Headless chrome、phantom js、slimmer js