草庐IT

Indexing

全部标签

mongodb - 什么时候应该在 MongoDB 中设置 TTL 索引?

我想为session集合使用TTL索引。我的问题是,我应该只在服务器启动时运行一次db.collection.createIndex(),还是每次插入新文档后都必须运行该命令?对于后一种情况,代码如下:DB.findOneAndUpdate(args).then((result)=>{DB.createIndex({'name':'sessions','keys':{'lastLogin':1},'options':{expireAfterSeconds:req.session.cookie.maxAge}});}).catch((err)=>console.log(err));

mongodb - 在 MongoDB 上创建地理空间索引

我正在使用MongoDB的地理空间功能,我的典型文档如下所示:{"_id":ObjectId("574ebe5f9985eb31a9bdbe39"),"geoareaName":"GEOAREA2","loc":{"type":"Polygon","coordinates":[[[13.870663396091308,3.481292724609375],[13.875996314658366,3.482236862182617],[13.872746581997381,3.484210968017578],[13.871829982503106,3.484961986541748],

MongoDb 索引已经存在

当我使用ensureIndex时,我收到一条消息,"allindexesalreadyexist".但是在getIndexes()中什么也没有。为什么?有人可以帮助我吗?mongos>db.UserBase.ensureIndex({"userId":1},{"unique":true}){"raw":{"shard2/192.168.2.69:27024,192.168.254.107:27024,192.168.254.108:27024":{"createdCollectionAutomatically":false,"numIndexesBefore":2,"numIndexe

mongodb - 用 mongodb 索引 : bad performance/indexOnly=false

我在一台8GB的​​Linux机器上运行了一个mongodb。目前它处于测试模式,因此几乎没有其他请求进来。我有一个收藏品,里面有100万份文件。我正在以下字段上创建索引:PeerGroup和CategoryIds(这是一个包含3-6个元素的数组,将在多键中产生):db.items.ensureIndex({PeerGroup:1,CategoryIds:1}.当我查询的时候db.items.find({"CategoryIds":newBinData(3,"xqScEqwPiEOjQg7tzs6PHA=="),"PeerGroup":"anonymous"}).explain()我有

python - MongoDB 文件路径作为唯一索引

我应该如何为这样的文档组织我的集合:{"path":"\\192.168.77.1\user\1.wav",//uniquetextindex"sex":"male","age":28//somefields}我在Python(pymongo)中使用这个方案:client=MongoClient(self.addr)db=self.client['some']db.files.ensure_index([('path',TEXT)],unique=True)data=[{"path":r'\\192.168.77.5\1.wav',"base":"CAGS2"},{"path":r'\

MongoDB 复合索引

我的集合需要复合索引,但我不确定键的顺序我的项目:{_id,location:{type:"Point",coordinates:[,]},isActive:true,till:ISODate("2016-12-29T22:00:00.000Z"),createdAt:ISODate("2016-10-31T12:02:51.072Z"),...}我的主要查询是:db.collection.find({$and:[{isActive:true},{'till':{$gte:newDate()}},{'location':{$geoWithin:{$box:[[SWLng,SWLat],

MongoDB 将所有现有索引迁移到新数据库

我有一个MongoDB开发集群,随着时间的推移,我在其中创建索引作为开发改进的一部分。在测试/生产MongoDB集群上,我也想维护相同的索引。那么我如何获取现有集合的所有索引并在新数据库上创建相同的集合索引? 最佳答案 从mongoshell切换到要收集索引的数据库第1步:切换到现有数据库并运行以下脚本>使用my_existing_db下面的脚本循环遍历所有集合并为每个集合构造一个运行命令。vardatabase=‘my_new_db'//SHOULDALWAYSMATCHDESTINATIONDBNAMEdb.getCollect

内存中的 MongoDB 索引与分片

坊间传言,如果您不能将正在使用的索引保存在内存中,MongoDB会变慢。这如何与分片一起工作?分片是只在内存中保留自己的BTree,还是每个分片都需要在内存中保留整个集合的索引? 最佳答案 DoesashardedonlykeepitsownBTreeinmemory...?是的,每个分片管理自己的索引。ThewordonthestreetisthatMongoDBgetsslowifyoucan'tkeeptheindexesyou'reusinginmemory.在使用分片和二级索引时,您实际上可以预料到更糟的情况。关键问题是路

optimization - 优化 MongoDB 查询或索引

我正在运行一个非常普通的MongoDB查询,没有什么真正复杂或特别的,我想知道它花费的时间(>1秒)是否正常,或者我的索引是否有问题。我为这个特定查询提供了一个索引,explain()也告诉我它已被使用,但它每次都会对集合进行全面扫描,并使整个网页的速度降低>1秒.查询:db.tog_artikel.find({"art_filter":{"$exists":false},"$where":"this._id==this.art_hauptartikelnr"})解释:>db.tog_artikel.find({"art_filter":{"$exists":false},"$wher

performance - 带排序的 MongoDB 地理空间查询 - 性能问题

我有查询(非常慢~2,5s):db.markers.find({latlng:{'$within':{'$box':[[-16,-140],[75,140]]}}}).sort({_id:-1}).limit(1000)当我为这个查询运行explain时,我得到了{"cursor":"GeoBrowse-box","isMultiKey":false,"n":1000,"nscannedObjects":242331,"nscanned":242331,"nscannedObjectsAllPlans":242331,"nscannedAllPlans":242331,"scanAnd