如何在Node中使用MongoDB

3
当我运行脚本时,出现错误。

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);
          }
        });
  });

你好,能否请您帮我看一下哪里出了问题?谢谢!


1
可能是重复的问题:TypeError: db.collection is not a function - Saravana
我相信你正在使用Node.js的Mongo Driver 3.0(或更高版本)?如果是这种情况,你不应该得到一个db,而是应该得到一个客户端作为回调。 - Nilesh Singh
@NileshSingh 是的,我有一个mongoVersion 3.6.1,请告诉我如何在关于脚本中获取“db”。 - Rahul Saini
3个回答

4

在Mongo Driver 3.0或更高版本中,连接回调函数返回errclient而不是db。要从客户端获取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文档

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);
            }
        });
    }
});

0

首先,您应该检查数据库是否连接成功,只需运行此代码即可确认变量url是否正确或mongodb是否已正确安装。

MongoClient.connect(url, function (err, db) {         
 if (err)

          {
              console.log("Failed connecting to the database.  " + err);
          } 
          else
          {
           console.log(Sucessfully)

           }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接