Node.js MongoDB创建的集合显示在NodeJS中,但不显示在CLI中?

Node.js MongoDB创建的集合显示在NodeJS中,但不显示在CLI中?,node.js,mongodb,Node.js,Mongodb,我正在尝试使用NodeJS驱动程序在MongoDB中创建一个capped集合 db.createCollection(req.body.name,options,function onCreateCollection(mongoErr,mongoCollection){ if(mongoErr){ ... }else{ console.log( mongoCollection.collectionName );

我正在尝试使用NodeJS驱动程序在MongoDB中创建一个capped集合

db.createCollection(req.body.name,options,function onCreateCollection(mongoErr,mongoCollection){
    if(mongoErr){
            ... 
    }else{
            console.log( mongoCollection.collectionName );
            ...
    }
});  
集合名称打印在控制台上,但
显示集合
未列出它。我尝试了一个连字符的名字
this-is-a-collection

为什么会这样?

另外,命名集合有哪些限制?

我不知道为什么您的代码不起作用。但我只是尝试创建一个带有连字符名称的集合
this-is-a-collection
,通过这个简单的脚本,它成功了

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

var url = 'mongodb://localhost:27017/db';

MongoClient.connect(url, function(err, db) {

    console.log("Connected correctly to server");

    db.createCollection('this-is-a-collection', { capped : true, size : 10000 } ,function onCreateCollection(err,mongoCollection){
       if(err){
            console.log(err);
        } else {
            console.log(mongoCollection.collectionName);
        }

        db.close();
    });
});
在CLI中:

MBP:mongo sapher$ mongo
MongoDB shell version: 3.0.5
connecting to: test
....
> use db
switched to db db
> show collections
system.indexes
this-is-a-collection
您可以按照此操作获取有关MongoDB命名限制的更多信息


对于命名约定,我个人使用类似于
远程用户的snake-case
。我认为这是命名收藏最优雅的方式。只要你保持一致,命名就没那么重要了

事实证明,在较旧版本的驱动程序
1.4.x
上,在不指定
size
选项的情况下创建封顶集合不会导致错误它甚至返回一个成功响应。在较新版本上,
2.0.x
,它确实会导致错误


对于封顶集合,
size
是必需的,而
max
是可选的。由于它们没有说明您需要
大小
来创建一个封顶集合,因此它们有点含糊不清

是的,我也得到了成功的回应。只是它没有出现在CLI中。奇怪的是,它对我有效。我只是用CLI输出编辑我的答案。尝试将其设置为capped集合,看看它是否有区别:/I我只是用忘记添加的缺少capped选项编辑代码。它正在工作。也许你忘了添加强制尺寸选项?我刚试过
1.4.9
。。这是工作lol。也许这是另一个问题,也许你应该添加更多的代码。我很高兴你终于解决了你的问题。我想你是第一个碰到这个问题的人。最后,我的回答没有解决你的问题。@Sapher+1然后告诉我:p@Sapher是的。如果不是你的话,我永远不会看
尺寸
选项。:)