当我尝试在mongodb中的system.indexes集合中手动插入新文档时,创建了新的集合。这里有代码
{
"v" : 1,
"key" : {
"code" : 1
},
"name" : "code_1",
"ns" : "mydb.collection"
}
其中collection是我的集合名称,该名称在数据库中不存在,mydb是我的数据库名称。为什么要创建新的集合?
答案 0 :(得分:2)
是否可以通过在system.indexes中手动添加索引来创建集合。
你为什么这样问我们?您已经尝试向system.indexes添加新索引。是否创建了新的系列?如果是,那么是的,如果不是,那么就不可能。
这是正确的方法吗?
您怎么看?您是否在文档中的某处阅读过为了创建新的集合,您需要跳舞并在某些系统定义的集合中手动创建索引?或者可能是was written in documentation db.createCollection(name, options)
是你应该做的,或者如果你愿意,你可以只insert a document in a non existed collection而且它会创造它。
那么为什么毕竟这个人可能会认为正确的方法是使用system.indexes进行一些操作?
答案 1 :(得分:0)
作为@Salvador的补充,Dali的回答强烈反对您直接修改system.index
:如果由于某种原因您真的不想/不能使用{{1只记得这是create command。
你可以发出这样的命令来创建一个新的集合:
createCollection
关于在db.runCommand( { create: "collection" } )
中插入条目:来自doc:
自3.0版开始不推荐使用:使用listIndexes访问此数据。
system.indexes
集合列出了数据库中的所有索引。
通过阅读,<database>.system.indexes
似乎应该被认为是只读的(自3.0以来它的直接使用甚至已被弃用)。您观察到的行为应被视为未指定。因此不可靠和如有更改,恕不另行通知。
如果你真的需要理解为什么它的行为方式,也许你应该看一下源代码或在MongoDB开发者邮件列表上提问。在那里你可以获得所有的见解。