如何使用 mongodb (node.js) 在集合中创建一个包含所有值的数组

Posted

技术标签:

【中文标题】如何使用 mongodb (node.js) 在集合中创建一个包含所有值的数组【英文标题】:How to make an array of all the values inside a collection with mongodb (node.js) 【发布时间】:2019-03-11 14:57:00 【问题描述】:

我不断收到未决的承诺。

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url,  useNewUrlParser: true  , function(err, db) 
    if (err) throw err;

    var dbo = db.db("mydb");
    var gr = dbo.collection("collectionname").distinct("name");

    // var everyrecord = dbo.collection("collectionname").find().toArray();

    console.log(gr);

    db.close();
);

【问题讨论】:

【参考方案1】:

如果你让函数异步,你可以等待结果:

MongoClient.connect(url,  useNewUrlParser: true  , async function(err, db) 
    // ...

    var gr = await dbo.collection("collectionname").distinct("name");
    console.log(gr);

    // ...
);

【讨论】:

@f.pythonlover 其他(非工作)答案被标记为解决方案的任何原因?【参考方案2】:

您可以通过使用 .toArray() 来实现这一点,

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";

    MongoClient.connect(url,  useNewUrlParser: true  , function(err, db) 

      if (err) throw err;

      db.collection("collectionname").distinct("name").toArray(function (error, response) 
         console.log(error);
         console.log(response);
      );
    );

【讨论】:

MongoClient.connect(url, useNewUrlParser: true , function(err, db) if (err) throw err; var dbo = db.db("mydb"); dbo.collection( "collectionname").distinct("name").toArray(function (error, response) console.log(error); console.log(response); ); );这不起作用?我错过了什么? 它说 toarray 不是一个函数 你没有错过任何东西。 Promise 没有 toArray 方法。看看我的 async/await 建议——假设你的节点版本支持它。【参考方案3】:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url,  useNewUrlParser: true  , function(err, db) 

if (err) throw err;

var dbo = db.db("mydb");

 var gr = dbo.collection("collectionname").distinct("name");
 gr = gr.toArray();

// var everyrecord = dbo.collection("collectionname").find().toArray();

  console.log(gr);

  db.close();
);

【讨论】:

Promises 上没有 toArray 方法。查看***.com/questions/20858299/…

以上是关于如何使用 mongodb (node.js) 在集合中创建一个包含所有值的数组的主要内容,如果未能解决你的问题,请参考以下文章

node.js如何配置mongodb连接池?

如何使用 mongodb (node.js) 在集合中创建一个包含所有值的数组

如何使用 Node.js 在 MongoDB 中使用 cursor.forEach()?

如何使用 Node.js 在 MongoDB 中使用 cursor.forEach()?

如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?

如何将 Mongoose/Mongodb 与 node.js- 护照身份验证一起使用