如何在mongodb中创建集合,而没有任何文档在nodejs

时间:2015-05-09 04:37:04

标签: node.js mongodb mongoose

我尝试将集合从第一个数据库复制到第二个数据库,具有文档的集合从第一个数据库复制到第二个数据库,但没有文档的集合不会被复制。当我尝试使用空文档创建新集合时,使用包含id字段的一个文档创建集合。但我的要求是使用mongoose在mongodb中创建没有任何文档的集合。如何使用mongoose库和node.js在MongoDb中创建空集合。这里是代码

var data = db.model('name', 'mymodel',"collectionName"),
   newCollection = new data({});
   newCollection .save(function (err) {});

1 个答案:

答案 0 :(得分:0)

您可以使用本机MongoDb驱动程序创建一个空集合。

var MongoClient = require('mongodb')。MongoClient;

MongoClient.connect('mongodb://localhost:27017/dbName', function(err, db) {
    db.createCollection(collectionName, function(err, collection) {
          db.close();
    })
})

现在您可以更进一步,检查集合是否存在。如果它确实跳过创建或者创建一个。

MongoClient.connect('mongodb://localhost:27017/dbName', function(err, db) {

    db.listCollections().toArray(function(err, collections) {
        var collectionExists = false;
        console.log(JSON.stringify(err,null,1));
        if(!err && collections && collections.length>0){
            _.each(collections,function (co) {
                console.log(JSON.stringify(co.name,null,1));
                if(co.name == collectionName){
                    collectionExists = true;
                }
            })
        }

        if(!collectionExists){
            db.createCollection(collectionName, function(err, collection) {

            })
        }
        db.close();
    });
})

参考文献:

  1. http://mongodb.github.io/node-mongodb-native/2.0/api/Db.html#listCollections
  2. http://mongodb.github.io/node-mongodb-native/2.0/api/Db.html#createCollection