我需要检查某个数据库上是否存在一个集合,如果不存在,就创建它。
db.createCollection(collName, {strict:true}, function(error, collection))
在创建集合collName
之前检查它是否存在,并设置error
对象。但是我需要一个独立的函数来检查它。
发布于 2015-03-08 06:54:54
本机驱动程序的Db
对象的collectionNames
方法接受一个可选的集合名称筛选器作为第一个参数,用于检查集合是否存在:
db.collectionNames(collName, function(err, names) {
console.log('Exists: ', names.length > 0);
});
在2.x版本的MongoDB本机驱动程序中,collectionNames
已被listCollections
所取代,后者接受筛选器并返回游标,因此您可以这样做:
db.listCollections({name: collName})
.next(function(err, collinfo) {
if (collinfo) {
// The collection exists
}
});
发布于 2016-10-20 04:51:56
从MongoDB 3.0开始,您可以简单地运行:
db.getCollectionNames()
返回一个数组,其中包含当前数据库中所有集合的名称:
[ "employees", "products", "mylogs"]
检查Mongo DB Documentation,或者如果需要关于每个集合的更多信息,也可以使用db.getCollectionInfos()
发布于 2016-04-29 16:59:37
现在,在Node.js本机驱动程序中有一个listCollections方法。它返回当前数据库中所有集合的信息。您可以使用它来检查给定的集合是否存在:
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;
}));
});
}
https://stackoverflow.com/questions/21023982
复制相似问题