我需要在db(mongodb)中获取大量文档

时间:2018-05-22 20:07:40

标签: javascript node.js mongodb

我需要在db(mongodb)中获取大量文档。我尝试将此值设为我的var:

var unique = collection.find({email: email}).count();

并且像这样:

var unique = collection.find({email: email}).toArray();
unique = unique.length;

但是,当我试图在控制台中看到这个号码时,这表明我未定义' :/ 什么错了?
P.S sry for my english

2 个答案:

答案 0 :(得分:1)

From the docs。它是db.collection.count。请勿使用find

  

返回与find()查询匹配的文档数   集合或视图。 db.collection.count()方法不执行   find()操作,而是计数并返回数字   与查询匹配的结果。

使用示例:

const MongoClient = require('mongodb').MongoClient;
// Connection url
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'users';
// Connect using MongoClient
MongoClient.connect(url, function(err, client) {
  const db = client.db(dbName);
  const email = 'foo@bar.com';
  const query = { email: email };
  const options = {};

  db.collection.count(query, options, (err, result) => {
    // handle error
    if (err) {
      console.log(err);
    }
    // do something with result
    console.log(result);
  });
});

以下是count可能如何运作的基本示例。我假设您正在使用mongodb npm而不是mongoose或其他类似的mongo包装器。我在项目中使用它的方法是将与mongodb的连接建立为自己的模块,以便可以与其他查询一起使用。这样你就不必用连接包装每个查询。

答案 1 :(得分:0)

如果您想获取集合的所有文档,请使用:

db.collection.count

如果您想通过字段获取集合的所有文档,请使用:

collection.find({email: email}).toArray(function (err, items) {
    console.log(items.length);
})