首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查Mongodb原生nodejs驱动中是否存在集合?

如何检查Mongodb原生nodejs驱动中是否存在集合?
EN

Stack Overflow用户
提问于 2014-01-09 23:13:02
回答 10查看 90.1K关注 0票数 51

我需要检查某个数据库上是否存在一个集合,如果不存在,就创建它。

代码语言:javascript
复制
db.createCollection(collName, {strict:true}, function(error, collection))

在创建集合collName之前检查它是否存在,并设置error对象。但是我需要一个独立的函数来检查它。

EN

回答 10

Stack Overflow用户

发布于 2015-03-08 06:54:54

本机驱动程序的Db对象的collectionNames方法接受一个可选的集合名称筛选器作为第一个参数,用于检查集合是否存在:

代码语言:javascript
复制
db.collectionNames(collName, function(err, names) {
    console.log('Exists: ', names.length > 0);
});

在2.x版本的MongoDB本机驱动程序中,collectionNames已被listCollections所取代,后者接受筛选器并返回游标,因此您可以这样做:

代码语言:javascript
复制
db.listCollections({name: collName})
    .next(function(err, collinfo) {
        if (collinfo) {
            // The collection exists
        }
    });
票数 56
EN

Stack Overflow用户

发布于 2016-10-20 04:51:56

从MongoDB 3.0开始,您可以简单地运行:

代码语言:javascript
复制
db.getCollectionNames()

返回一个数组,其中包含当前数据库中所有集合的名称:

代码语言:javascript
复制
[ "employees", "products", "mylogs"]

检查Mongo DB Documentation,或者如果需要关于每个集合的更多信息,也可以使用db.getCollectionInfos()

票数 6
EN

Stack Overflow用户

发布于 2016-04-29 16:59:37

现在,在Node.js本机驱动程序中有一个listCollections方法。它返回当前数据库中所有集合的信息。您可以使用它来检查给定的集合是否存在:

代码语言:javascript
复制
collectionExists = function(name, cb) {
  mongoDb.listCollections().toArray(function(err, collections) {
    if (err) return cb(err);

    cb(null, collections.some(function(coll) {
      return coll.name == name;
    }));
  });
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21023982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档