草庐IT

database-performance

全部标签

database-design - 如何在这个嵌套文档结构(MongoDB)中进行查询?

(对不起,如果这是一个微不足道的问题。)我有这样的文档(Python语法):{'_id':SomeObjectId,'features':[{'id':'featureX','value':6},{'id':'featureY','value':45}]}使用此结构,可以轻松找到在特征列表中包含“featureX”的所有文档。但我也有兴趣检索子文档中关联的值。我认为在Python中,如果我通过这样的查询获取文档:db.articles.find({'features.id':'featureX'})那么我将需要遍历数组'特征”来找出正确的“值”。是否有其他类型的查询可以给我有趣的值(在

performance - "nscanned"查询上的 "update"值非常高 - 似乎高于所有索引中所有条目的总和

我在偶尔的更新查询中得到非常高的“nscanned”数字,而“nscannedObjects”相对较低。我从mongodb日志中获取这些数字,作为慢速查询自动记录的一部分(这些更新需要100毫秒到500毫秒之间的任何时间)。更新后的集合有198K个项目,大小刚刚超过100MB。它有许多不同的字段(超过30个),以及这些字段及其组合的31个索引。这是来自MongoDB.log的完整条目-包括查询和结果:2014-09-22T11:55:22.507+0000[conn45755]updatemydatabase.mycollectionquery:{_id:ObjectId('53d13

performance - mongodb - 推荐用于大量数据点的树结构

我正在从事一个项目,该项目记录跨多个地区的商品价格历史记录,并且我计划将数据存储在mongodb集合中。由于我对mongodb比较陌生,所以我很好奇对于大量数据,推荐的文档结构可能是什么。情况是这样的:我正在记录200多个地区的大约90,000件商品的价格历史记录。我希望每小时记录每件商品的价格,并为任何给定商品提供2周的历史记录。结果大约是(90000*200*24*14)~=60亿个数据点,或者每个项目大约67200个。每天将运行一次清理查询以删除超过14天的记录(更具体地说,将其存档到gzip压缩的json/文本文件中)。就我将从中获取的数据而言,我主要对两件事感兴趣:1)特定区

mongodb - 搜索实现 : ElasticSearch vs MongoDB vs Relational Database

我正在设计一个大型旅游市场代理机构,其中有170000家酒店和3000种房型。我的实体的简单表示是:Hotel:destination:Parisrooms:room_a:type:singleroom_b:type:doubleRoomType:name:doublepaxes(peopleinroom):2最基本的搜索操作需要用户提供目的地和所需房间的数量以及每个房间的人数。在我看来,获取所有提供所需房间的酒店的简单SQL查询似乎很简单,但我担心我的数据大小。到目前为止,我只使用过关系数据库,之前没有使用过NoSQL数据库(例如MongoDB和ElasticSearch)的经验,我

performance - MongoDB:通过嵌套键与顶级键查找

选项1:{_id:ObjectId,text:String,author:{id:ObjectId,name:String,email:String}}选项2:{_id:ObjectId,text:String,authorId:Id,author:{name:String,email:String}}我有一个类似于上面选项1的Post文档架构。有一个单独的“作者”集合,上面的作者ID字段正在引用它。这里重复了“姓名”和“电子邮件”;Authorcollection上有更多的作者信息。我对Post集合的查询之一是查询某个作者ID的所有帖子。就性能而言,是否最好选择选项2,因为作者IDk

MongoDB : multiple specific collections or one "store-it-all" collection for performance/indexing

我正在记录用户在我们网站上进行的不同操作。每个Action都可以是不同的类型:评论、搜索查询、页面View、投票等……这些类型中的每一个都有自己的模式和公共(public)信息。例如:comment:{"_id":(mongoId),"type":"comment","date":4/7/2012,"user":"Franck","text":"Thisisasamplecomment"}search:{"_id":(mongoId),"type":"search","date":4/6/2012,"user":"Franck","query":"mongodb"}etc...基本上,

performance - MongoDB动态排名

我使用MongoDB并有一个包含大约100000个条目的集合。条目包含这样的数据:{"page":"page1","user_count":1400}{"page":"page2","user_count":1100}{"page":"page3","user_count":900}...我想根据user_count输出条目的排名,例如:#1-page1#2-page2#3-page3......到目前为止一切顺利。如果我只输出一个排序列表,我可以简单地使用循环计数器。但我还必须支持各种搜索查询。因此,例如我得到20个结果,并想显示结果的排名。喜欢:#432-page1232#32-p

mongodb - mLab 连接错误 : Database name cannot have reserved characters for mongodb://

我在运行mLab命令以通过mongoshell连接时遇到mongoDB连接错误。使用下面的mLab命令在Windowsgitbash终端下运行。我没有为数据库名称使用任何保留字符,基本上只是一个小写字符串。有什么想法吗?使用mongoshell连接:mongods237967.mlab.com:37967/-u-pconnectingto:mongodb://:27017/ds237967.mlab.com%3A379672018-01-01T00:20:45.371-0800EQUERY[thread1]Error:Databasenamecannothavereservedchar

Mongodb 检查存在计数与 findOne 性能

我想知道我的数据库中是否存在某个文档,我很好奇,最好的方法是什么?使用User.findOne(query).select('_id')或User.count(查询)一方面,findOne返回一个24位的十六进制字符串,而count将只返回一个整数;另一方面,.count它将遍历整个集合,而.findOne将在第一个匹配的文档处停止。我找到的与此相关的唯一答案是this问题,找不到其他任何答案,哪个答案有利于.count,Mongo在性能方面做了很多工作,这个问题是6年前的。什么更有值(value)?内存(findOne)还是处理能力(count)? 最佳答

database - 计算符合条件的数组元素

我有一个名为“session”的mongoDB集合,参与者如下:[{"_id":5b894357a0c84d5a5d221f25,"conferenceName":"myFirstConference","startDate":1535722327,"endDate":1535722420,"participants":[{"name":"user1","origin":"internal","ip":"192.168.0.2"},{"name":"user2","origin":"external","ip":"172.20.0.3"},]},...]我想得到以下结果:[{"conf