Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json mongoDB系统索引是随数据库内容而变化,还是静态配置?_Json_Mongodb_File_Indexing_System - Fatal编程技术网

Json mongoDB系统索引是随数据库内容而变化,还是静态配置?

Json mongoDB系统索引是随数据库内容而变化,还是静态配置?,json,mongodb,file,indexing,system,Json,Mongodb,File,Indexing,System,我们在Mongo2.6上使用全文搜索。为此,我们使用db.ensureIndex命令创建索引。然后我们保存这些系统索引,以便开发人员可以将带有适当索引的测试数据导入到干净的数据库中。我们使用以下策略将全文搜索索引导入干净的数据库: mongoimport-dkrypton-csystem.indexes--jsonArray--drop--file deploy/systemIndexes.js systemIndexes.js文件是使用mongoexport命令生成的,如下所示: [{“v”:

我们在Mongo2.6上使用全文搜索。为此,我们使用db.ensureIndex命令创建索引。然后我们保存这些系统索引,以便开发人员可以将带有适当索引的测试数据导入到干净的数据库中。我们使用以下策略将全文搜索索引导入干净的数据库:

mongoimport-dkrypton-csystem.indexes--jsonArray--drop--file deploy/systemIndexes.js

systemIndexes.js文件是使用mongoexport命令生成的,如下所示:

[{“v”:1,键:{“id”:1},“name”:“id”,“ns”:“krypton.finder”},{“v”:1,键:{“loc”:“2d”}

当文档添加到数据库中时,这些系统索引是否会发生变化?我的猜测是不,它们不是,系统索引表示静态配置(哪些列对哪些集合进行了索引,等等)

我说得对吗?但如果我说得对,mongo在哪里——在哪些文件中——维护数据库中已经存在或正在添加的文档的实际索引

我假设,随着新文档添加到数据库中,这些文件的大小将增加

欢迎提供所有提示或观点。 提前谢谢


Ben

系统.indexes集合只包含索引定义。如果只使用
mongodump
转储集合,将得到类似的输出,其中将有一个包含数据的
BSON
文件和一个包含索引定义的元数据
JSON
文件(顺便说一下,我建议使用这种方法,而不是通常使用
mongoexport
)。通过导出您描述的
system.indexes
集合,基本上是手动完成的

将定义还原到system.indexes(手动或使用mongorestore)时,只要插入到
system.indexes
,就会启动索引生成。如果数据量很小(或没有数据),然后这将很快完成,并且随着文档的添加,索引也将更新—对于大型数据集,这将花费大量时间

就存储而言,索引存储在数据文件中,而不是存储在其他位置的单独文件中-它们存储在这些文件中的单独数据块中,但这不是在数据库之外公开的内容。有一个长期存在的功能请求允许索引分开()但目前还没有计划实施


因此,如果您希望交付完整的索引,那么您也需要交付数据,它们不能单独交付。如果您希望交付两者,那么您只需要向开发人员提供数据库文件:dbname.ns、dbname.0、dbname.1、dbname.2等。停止写操作(为了一致性),对这些文件进行tar(或使用您选择的存档方法)并将其提供给您的开发人员-每个数据库都可以被视为独立的。

非常感谢。这非常有用。没问题:)-值得注意的是,MMS备份服务(免费试用,按正确使用付费,并作为内部解决方案提供)有效地为您做到这一点—每个数据库快照(如果需要,可以创建到任意时间点)都作为一组完整的数据文件(因此数据和索引)提供,并将有效地为您自动化整个过程: