Node.js MongoDB创建的集合显示在NodeJS中,但不显示在CLI中?
我正在尝试使用NodeJS驱动程序在MongoDB中创建一个capped集合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 );
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是的。如果不是你的话,我永远不会看尺寸选项。:)