使用MongoDB中的find()获取多个文档时遇到问题

时间:2017-08-30 15:06:05

标签: node.js mongodb ecmascript-6

我正在尝试从MongoDB数据库中的集合中获取满足特定条件的多个文档。当我使用findOne()时,它完全正常并返回遵循条件的第一个文档,但find()没有返回所有文档。我已经检查了很多网站和文档,但仍然没有找到很好的例子来说明它是如何完成的。这是我正在尝试的当前语法:

   db.collection('mycollection').find({someproperty : 
   somevalue}).then((docs)=>{
      // trying to do something with the returned documents 'docs'
   }

另外,我真的更喜欢非猫鼬解决方案,除非使用普通的MongoDB绝对不可能。我知道使用猫鼬可能更容易,但我想知道MongoDB的实现。

1 个答案:

答案 0 :(得分:1)

Mongo Docs中,find函数返回cursor

  

指向符合查询条件的文档的光标。当find()方法“返回文档”时,该方法实际上是将光标返回给文档。

我猜你期待一个阵列?您需要使用toArray函数,其文档为https://mongodb.github.io/node-mongodb-native/api-generated/cursor.html#toarray

不幸的是,这是一个回调,没有承诺实施,所以你需要自己承诺。

return new Promise((resolve, reject) => db.collection('mycollection')
  .find({someproperty : somevalue})
  .toArray((err, documents) => resolve(documents)));