【问题标题】:Unable to read collection data in mongo/node无法读取 mongo/node 中的集合数据
【发布时间】:2016-11-30 12:57:44
【问题描述】:

我正在 nodeJs 中试用 mongoDB,但在 mongodb 服务器上的 db 收集文件遇到问题。服务器设置为窗口服务,因此它已启动并正在运行。我让 nodejs 在运行时连接到它。我做了模拟示例,它可以工作(我认为它设置正确)。

如果我想查看在 nodejs 中创建的集合,它会显示它们。如果我转到 mongodb 服务器数据库(data\db 文件夹),我会看到一个集合已创建。问题是当我打开另一个 cmd.exe 实例时,输入 mongodb 并想查看集合 db.collections-2 中的内容,返回的是 NaN。

我可能做错了,或者有一个我不知道的文件丢失。有人可以给我建议并解释为什么我会得到 NaN。

nodejs代码如下。

var MongoClient=require('Mongodb').MongoClient,format = require('util').format;
var url = 'mongodb://localhost:27017/myproject';
MongoClient.connect(url,function(err,db){
    if(err){
        console.log(err);
}
else{
    console.log("connected to", url );
} 
var user1 = {name: 'modulus admin', age: 42, roles: ['admin', 'moderator', 'user']};
var user2 = {name: 'modulus user', age: 22, roles: ['user']};
var user3 = {name: 'modulus super admin', age: 92, roles: ['super-admin',  'admin', 'moderator', 'user']};

 collection.find({name: 'modulus user', roles:  'user'}).toArray(function(err, result) {
  if (err) {
    console.log(err);
  } else if (result.length) {
    console.log('Found:', result);
  } else {
    console.log('No document(s) found with defined "find" criteria!');
  }
})

  db.close()
 })

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    好的,您的问题中有一些不清楚的地方,让我试着澄清一下:

    您将无法直接在 data/db 中读取集合数据,您必须使用 mongo shell。

    在 mongo shell 中,我假设这就是您所指的 “打开另一个 cmd.exe 实例输入 mongodb”,尝试输入以下命令:

     use myproject 
    show collections
    db.mycollection.find({}) //replace 'mycollection' by the name of the collection
    

    这将显示集合“mycollection”的第一个文档。

    但是,在您的节点代码中,您似乎没有定义集合名称? 它应该是这样的:

     var collection = db.collection('mycollection')
     collection.find({name: 'modulus user', roles:  'user'}).toArray(...
    

    【讨论】:

    • 好的,谢谢我尝试了你的建议,但我得到了....[thread1] ReferenceError: collection is not defined @(shell):1:1
    【解决方案2】:

    我已经扔掉了你的代码并纠正了一些错误, - 你必须返回你的console.log(error),否则没有包含在 else 中的代码无论如何都会运行。 - 您必须使用db.collection('name').insert(data) 在集合中实际插入数据 - 你必须指定集合的​​名称db.collection('name')

    var MongoClient=require('mongodb').MongoClient
    var format = require('util').format;
    var url = 'mongodb://localhost:27017/myproject';
    MongoClient.connect(url,function(err,db){
        if(err){
            return console.log(err); // return your response otherise the code that isn't 
            // wrapped in else will get run anyway
      }
      else{
          console.log("connected to", url );
      } 
      var user1 = {name: 'modulus admin', age: 42, roles: ['admin', 'moderator', 'user']};
      var user2 = {name: 'modulus user', age: 22, roles: ['user']};
      var user3 = {name: 'modulus super admin', age: 92, roles: ['super-admin',  'admin', 'moderator', 'user']};
    
      // insert data 
      db.collection('users').insert(user1)
      db.collection('users').insert(user2)
      db.collection('users').insert(user3)
    
      // collect data from users table
     db.collection('users').find({name: 'modulus user', roles:  'user'}).toArray(function(err, result) {
      if (err) {
        console.log(err);
      } else if (result.length) {
        console.log('Found:', result);
      } else {
        console.log('No document(s) found with defined "find" criteria!');
      }
    })
    
      db.close()
     })
    

    【讨论】:

      猜你喜欢
      • 2018-06-27
      • 2020-04-22
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 2019-09-12
      • 1970-01-01
      相关资源
      最近更新 更多