草庐IT

Indexing

全部标签

MongoDB 需要很长时间才能建立索引

我有以下设置:配备2GBRAM的MacPro(是的,没那么多)MongoDB1.1.364位单个集合中有800万个条目需要一个字段(整数)的索引调用.ensureIndex(...)需要一个多小时,实际上我在那之后终止了进程。我的印象是,它花费的时间太长了。此外,我终止了该过程,但之后可以使用.getIndexes()查看索引。有人知道这里出了什么问题吗? 最佳答案 在现有数据集上添加索引预计需要一段时间,因为需要构建整个BTree。如果您认为这花费了不合理的时间,或者您发现性能下降,最好的办法是在thelist上询问它。.

php - 使用 PHP 为 mongodb $id 索引提供我自己的值

我想在mongodb$id字段中插入我自己的唯一值我已经有一个唯一的键,我不想再用另一个索引占用额外的空间。如何使用PHPAPI执行此操作? 最佳答案 $collection->save(array('_id'=>newMongoId('my_mongo_id'),'foo'=>'bar')); 关于php-使用PHP为mongodb$id索引提供我自己的值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

arrays - MongoDB 和数组上的覆盖索引可能吗?

假设我添加了一个文档db.search.save({terms:["10115","Berlin","Germany"]})我通过以下方式添加了一个索引:db.search.ensureIndex({terms:1})当搜索文档并确保只获取索引时db.search.find({terms:"Berlin"},{terms:1,_id:0}).explain()#note:causesthewholeoutputofthearray,whichmightcausesometrouble?#however,leavingitoutdoesn'tchangeanything我希望在.expl

java - 如何使用Morphia框架在mongoDB项目中添加索引

我正在开发一个gwt项目,该项目使用mongoDB作为数据库,并使用morphia框架与mongodb一起工作。我已经完成了我的类的基本dao,现在我想在我的类中插入索引以加速mongo搜索。我看了morphia文档,我看到有一个@Indexed可以做到这一点,但我不知道如何在搜索中真正使用索引。吗啡会自动使用索引?有没有人在实际项目中有一个很好的索引示例?(mongodb站点的helloworld示例没有多大帮助)==编辑==是否建议仅在嵌入字段中插入索引? 最佳答案 Mongodb会自动使用indexes所以这不是吗啡处理的。您

python - 通过 Javascript 添加 Mongo 索引

我想在交互式Mongoshell之外为我的mongo集合添加一个索引。我们在Python中构建,因此我可以通过MongoEngine进行设置,但是,我更愿意直接设置索引。我可以使用db.eval()来实现吗? 最佳答案 您可以使用来自Python的collection_name.create_indexAPI。http://api.mongodb.org/python/1.11/api/pymongo/collection.html如果使用Javascript,eval()的问题是需要写锁,而创建索引本身也需要写锁。由于这个原因,我

mongodb - 仅对 MongoDB 中的部分字段建立索引

有没有办法只在MongoDB的字段的一部分上创建索引,例如前10个字符?我找不到它的记录(或在这里询问)。MySQL的等价物是CREATEINDEXpart_of_nameONcustomer(name(10));。原因:我有一个包含单个字段的集合,其长度从几个字符到超过1000个字符不等,平均为50个字符。由于有大约一亿个文档,因此很难将完整索引放入内存(根据统计数据,使用8%的数据进行测试时,索引已经达到400MB)。仅对字段的第一部分建立索引会将索引大小减少大约75%。在大多数情况下,搜索词很短,不是全文搜索。解决方法是为每个项目添加10个(小写)字符的第二个字段,对其进行索引,

MongoDB 索引

我们有一个包含近4000万条记录的MongoDB集合。该集合的当前大小为5GB。此集合中存储的数据包含以下字段:_id:"MongoDBid"userid:"userid"(int)mobile:"usersmobilenumber"(int)transaction:"transactionid"(int)sms:"messagesenttousermobile"(text)created_dt:"unixtimestampofthetransaction"除了_id上的索引(默认创建)之外,我们还在移动和交易字段上定义了单独的索引。但是,以下查询需要60到120秒才能完成:{mobi

c++ - MongoDb 使用 C++ 驱动程序创建稀疏索引

有没有办法创建一个sparse使用MongoDb(2.2)C++驱动程序建立索引?ensureIndex函数似乎不接受这个参数。来自MongoDbdocs:boolmongo::DBClientWithCommands::ensureIndex(conststring&ns,BSONObjkeys,boolunique=false,conststring&name="",boolcache=true,boolbackground=false,intv=-1) 最佳答案 就此而言,dropDups也不是争论...作为解决方法,您可以自

oracle - 用于实时搜索的 MongoDB 与 Oracle

我正在构建一个应用程序,我在其中跟踪用户事件更改并向用户显示事件日志。这里有几点:每天插入1亿条记录。这些记录将立即(几秒钟内)编入索引并在搜索结果中可用。用户可以在公开的10个字段中的任何一个上过滤记录。 最佳答案 我认为Mongo和Oracle都无法满足您的需求。我建议从您的主要数据存储中卸载搜索组件,可能是像ElasticSearch这样的东西:http://www.elasticsearch.org/ 关于oracle-用于实时搜索的MongoDB与Oracle,我们在Stack

mongodb - 整个数组的多键索引

MongoDB的docs解释多键索引。考虑这个评论文档。{"_id":ObjectId(...)"title":"GroceryQuality""comments":[{author_id:ObjectId(...)date:Date(...)text:"Pleaseexpandthecheddarselection."},{author_id:ObjectId(...)date:Date(...)text:"Pleaseexpandthemustardselection."},{author_id:ObjectId(...)date:Date(...)text:"Pleaseexpa