【问题标题】:How to use mongoDB with node如何在节点上使用 mongoDB
【发布时间】:2018-06-29 12:47:18
【问题描述】:

当我运行脚本时,错误返回。

TypeError:db.collection 不是函数

 var MongoClient = require('mongodb').MongoClient;
 var url = "mongodb://abc:12345**@xxxx.mlab.com:&&&&/myDB";
 MongoClient.connect(url, function(err, db) {
   if(err) {
      console.log(err);
   } else {
      console.log("Database created!");
      db.collection('users').aggregate([{
        '$match': {
          'organization.organizationId': "e1716c62-fdce-11e7-8be5-
           0ed5f89f718b"
        }
      },{
       "$project": {
          "deviceDetails": 1,
          "userDetails": 1
       }
     }], function(error, documents) {
           if (error) {
             console(error);
           } else {
           console.log(documents);
          }
        });
  });

嗨,你能帮我看看我哪里做错了。谢谢!

【问题讨论】:

  • 我相信您正在为 Node.js 使用 Mongo Driver 3.0(或更高版本)?在这种情况下,你不应该得到一个数据库,而是一个客户端作为回调。
  • @NileshSingh 是的,我有一个 mongoVersion 3.6.1,请告诉如何在 about 脚本中获取 'db'

标签: node.js mongodb aggregation mlab


【解决方案1】:

对于 Mongo Driver 3.0 或更高版本,连接回调返回 errclient 而不是 db。要将数据库从客户端中取出,请执行此操作,

var db = client.db;

在你的情况下,它看起来像这样,

MongoClient.connect(url, function(err, client) {
   if(err) {
    console.log(err);
   } else {
      var db = client.db;
      console.log("Database created!");
      db.collection('users').aggregate(...)
   }
})

【讨论】:

    【解决方案2】:

    使用MongoClient.connect(url, function(err, client)),这是在最近的更新中发布的。更多信息请参考Mongo Driver Docs

    var MongoClient = require('mongodb').MongoClient;
    // Dont use database name in link
    var url = "mongodb://abc:12345**@xxxx.mlab.com:&&&&";
    MongoClient.connect(url, function(err, client) {
        if (err) {
            console.log(err);
        } else {
            let db = client.db('myDB')
            console.log("Database created!");
            db.collection('users').aggregate([{
                '$match': {
                    'organization.organizationId': "e1716c62-fdce-11e7-8be5-0e d5f89f718b "
                }
            }, {
                "$project": {
                    "deviceDetails": 1,
                    "userDetails": 1
                }
            }], function(error, documents) {
                if (error) {
                    console(error);
                } else {
                    console.log(documents);
                }
            });
        }
    });
    

    【讨论】:

      【解决方案3】:

      首先,您应该检查数据库是否连接或不仅运行此代码,以便确认变量 url 正确或 mongodb 已正确安装。

      MongoClient.connect(url, function (err, db) {         
       if (err)
      
                {
                    console.log("Failed connecting to the database.  " + err);
                } 
                else
                {
                 console.log(Sucessfully)
      
                 }
      });
      

      【讨论】:

        猜你喜欢
        • 2021-12-17
        • 1970-01-01
        • 2018-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多