我正在使用水线,并且使用mongoimport命令导入了数据库。我使用本机驱动程序连接到mongo,分别调用.find和.aggregate。
使用$ or查找具有上一组查询结果的多个记录时。数组看起来像
[{"\"ProductID\"": "76543"},{"\"ProductID\"": "74632"}, {"\"ProductID\"": "76534",...n}]
不用担心KEY,这是一个临时设置,因为文件中的控制字符用于将csv转换为json,然后mongoimport新文件。
我应该能够对数组执行以下查询。
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的3.2。mongoDB明确指出与3.2的nodejs驱动程序的兼容性> = 2.1.0。
我很惊讶没有人提出这是mongoDB的专家,因为考虑到发生的错误与我的数据库中的值完全不一致,所以这是mongoDB的专家。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句