通过在system.indexes中添加索引,在mongodb中创建新集合

通过在system.indexes中添加索引,在mongodb中创建新集合,mongodb,collections,Mongodb,Collections,当我尝试在mongodb的system.indexes集合中手动插入新文档时,新集合已创建。代码如下 { "v" : 1, "key" : { "code" : 1 }, "name" : "code_1", "ns" : "mydb.collection" } 其中collection是数据库中尚未存在的我的集合名称,mydb是我的数据库名称。为什么要创建新集合 是否可以通过在system.indexes中手动添加索引来创建集合

当我尝试在mongodb的system.indexes集合中手动插入新文档时,新集合已创建。代码如下

   {
    "v" : 1,
    "key" : {
        "code" : 1
    },
    "name" : "code_1",
    "ns" : "mydb.collection"
}
其中collection是数据库中尚未存在的我的集合名称,mydb是我的数据库名称。为什么要创建新集合

是否可以通过在system.indexes中手动添加索引来创建集合

你为什么问我们这个?您已尝试向system.indexes添加新索引。是否已创建新集合?如果是,那么是可能的,如果不是,那么不可能

这是正确的方法吗

你觉得怎么样?您是否阅读过文档中的某个地方,为了创建一个新的集合,您需要在一些系统定义的集合中跳舞并手动创建索引?或者可能是
db.createCollection(名称、选项)
是您应该做的,或者如果您希望,您可以直接创建它


那么,为什么人们会认为正确的方法是对system.index进行一些操作呢?

作为对@Salvador Dali回答的补充,强烈反对您直接修改system.index:如果出于某种原因,您确实不想/不能使用
createCollection
,记住,这是一个包裹在纸上的包装

您可以发出以下命令来创建新集合:

db.runCommand( { create: "collection" } )

关于在
系统索引中插入条目:从:

自3.0版以来已弃用:使用listIndexes访问此数据

.system.index
集合列出了数据库中的所有索引

通过阅读,似乎应该将
system.index
视为只读(从3.0开始,它的直接使用甚至被弃用)。您观察到的行为应视为未指定。不可靠,如有变更,恕不另行通知


如果您真的需要理解它为什么会这样,那么您可能应该看看源代码,或者在MongoDB开发人员邮件列表上询问这个问题。您可以在那里获得所有的见解。

这似乎是您在过去两天内第三次问这个问题(使用另一个帐户)。最好是编辑和改进你现有的问题,而不是多次提问。无论如何,请参阅Salvador关于使用
createCollection
的回答。