【问题标题】:nodejs MongoDB issue - not a functionnodejs MongoDB问题 - 不是函数
【发布时间】:2019-04-11 12:18:09
【问题描述】:

我正在尝试运行它来检查集合是否确实存在:

dbo.collectionNames("users", function(err, names) {
    console.log('Exists: ', names.length > 0);
});

但它一直告诉我'collectionNames' 不是函数

我该如何进行这项检查?

【问题讨论】:

  • dbo ?请提供有问题的。
  • 你的mongoose版本和mongodb驱动版本是多少?如果使用猫鼬。
  • dbo 只是:var dbo = db.db("myDatabase");
  • @monroe2019 这在这里得到了回答,会帮助你...stackoverflow.com/questions/33214175/…
  • 我需要检查一个特定的命名集合,而不是如果有任何集合

标签: node.js mongodb


【解决方案1】:

我相信您正在使用 >2.0 的 Mongo 驱动程序。如果是这样,请使用,dbo.listCollections

dbo.listCollections().toArray(function(err, colls){
   let myCollection = colls.find(coll => coll.name === 'users');
   console.log('Exists: ', myCollection?'Yes': 'No');
});

已编辑:上面的代码应该可以工作。

【讨论】:

  • 这将不允许 OP 知道 特定集合是否存在。它只会列出现有的集合。
  • @Lix,我相信他可以从 colls 数组中检查所需的集合。还有来自 colls 数组长度的集合数量。你不同意吗?
  • 没有任何链接告诉我如何按名称检查集合
  • 我不知道,你发现了什么困难。如果集合存在,下面的代码应该返回你想要的。 dbo.listCollections().toArray(function(err, colls){ let myCollection = colls.find(coll => coll.name === 'users'); console.log('Exists: ', myCollection?'Yes' : '否'); });
猜你喜欢
  • 2018-06-04
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
相关资源
最近更新 更多