如何使用Node.js检查MongoDB中是否存在集合?

基本上,我想根据集合是否存在来隐藏div 。 有谁知道最简单的方法呢? 我正在用Jade使用Mongoose和Express.js。

如果你想通过node.js本地api直接点击mongodb,你可以使用db.collectionNames():

列出现有的集合

列表名称

可以使用collectionNames列出集合

db.collectionNames(callback);

callback获取两个参数 – 一个错误对象(如果发生错误)和一个集合名称作为string的数组。

集合名称还包括数据库名称,因此数据库博客中名为posts的集合将被列为blog.posts。

另外还有一些系统集合,如果不知道你在做什么,就不应该改变,这些解决scheme可以用系统前缀来标识。 例如posts.system.indexes。

例:

var MongoClient = require('mongodb').MongoClient , format = require('util').format; MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { if(err) throw err; db.collectionNames(function(err, collections){ console.log(collections); }); }); 

http://mongodb.github.io/node-mongodb-native/markdown-docs/collections.html

你可以使用

  db.system.namespaces.find( { name: dbName +'.' + collectionName } ); 

它包含集合和索引的条目,对于现有的集合,它应该返回如下所示的内容:

 { "name" : "temp333.categories" } 

要从mongoose做到这一点,你可以定义system.namespaces模型和查询。