Questions tagged «mongodb»

MongoDB是一个可扩展的,高性能,开源,面向文档的NoSQL数据库。它支持多种语言和应用程序开发平台。可以在https://dba.stackexchange.com上询问有关服务器管理的问题。


16
使用熊猫的“大数据”工作流程
在学习熊猫的过程中,我试图迷惑了这个问题很多月。我在日常工作中使用SAS,这非常有用,因为它提供了核心支持。但是,由于许多其他原因,SAS作为一个软件也是很糟糕的。 有一天,我希望用python和pandas取代我对SAS的使用,但是我目前缺少大型数据集的核心工作流程。我不是在谈论需要分布式网络的“大数据”,而是文件太大而无法容纳在内存中,但文件又足够小而无法容纳在硬盘上。 我的第一个想法是用来HDFStore将大型数据集保存在磁盘上,然后仅将需要的部分拉入数据帧中进行分析。其他人提到MongoDB是更易于使用的替代方案。我的问题是这样的: 什么是实现以下目标的最佳实践工作流: 将平面文件加载到永久的磁盘数据库结构中 查询该数据库以检索要输入到熊猫数据结构中的数据 处理熊猫中的片段后更新数据库 现实世界中的示例将不胜感激,尤其是那些从“大数据”中使用熊猫的人。 编辑-我希望如何工作的示例: 迭代地导入一个大的平面文件,并将其存储在永久的磁盘数据库结构中。这些文件通常太大而无法容纳在内存中。 为了使用Pandas,我想读取这些数据的子集(通常一次只读取几列),使其适合内存。 我将通过对所选列执行各种操作来创建新列。 然后,我将不得不将这些新列添加到数据库结构中。 我正在尝试找到执行这些步骤的最佳实践方法。阅读有关熊猫和pytables的链接,似乎添加一个新列可能是个问题。 编辑-专门回答杰夫的问题: 我正在建立消费者信用风险模型。数据类型包括电话,SSN和地址特征;财产价值;犯罪记录,破产等贬义信息。我每天使用的数据集平均有近1,000到2,000个字段,这些字段是混合数据类型:数字和字符数据的连续,名义和有序变量。我很少追加行,但是我确实执行许多创建新列的操作。 典型的操作涉及使用条件逻辑将几个列合并到一个新的复合列中。例如,if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'。这些操作的结果是数据集中每个记录的新列。 最后,我想将这些新列添加到磁盘数据结构中。我将重复步骤2,使用交叉表和描述性统计数据探索数据,以寻找有趣的直观关系进行建模。 一个典型的项目文件通常约为1GB。文件组织成这样的方式,其中一行包含消费者数据记录。每条记录的每一行都有相同的列数。情况总是如此。 创建新列时,我会按行进行子集化是非常罕见的。但是,在创建报告或生成描述性统计信息时,对行进行子集化是很常见的。例如,我可能想为特定业务创建一个简单的频率,例如零售信用卡。为此,除了我要报告的任何列之外,我将只选择那些业务线=零售的记录。但是,在创建新列时,我将拉出所有数据行,而仅提取操作所需的列。 建模过程要求我分析每一列,寻找与某些结果变量有关的有趣关系,并创建描述这些关系的新复合列。我探索的列通常以小集合形式完成。例如,我将集中讨论一组20个仅涉及属性值的列,并观察它们与贷款违约的关系。一旦探索了这些列并创建了新的列,我便转到另一组列,例如大学学历,并重复该过程。我正在做的是创建候选变量,这些变量解释我的数据和某些结果之间的关系。在此过程的最后,我应用了一些学习技术,这些技术可以根据这些复合列创建方程。 我很少向数据集添加行。我几乎总是会创建新列(统计/机器学习术语中的变量或功能)。



6
MongoDB与Cassandra的比较
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 我正在评估什么是最好的迁移选项。 目前,我在分片的MySQL(水平分区)上,我的大部分数据存储在JSON Blob中。我没有任何复杂的SQL查询(自从对数据库进行分区以来,已经迁移了)。 现在,似乎MongoDB和Cassandra都是可能的选择。我的情况: 每个查询中的读取次数很多,常规写入的次数更少 不担心“大规模”的可扩展性 更关注简单的设置,维护和代码 最小化硬件/服务器成本

12
查询数组大小大于1的文档
我有一个MongoDB集合,其中的文件格式如下: { "_id" : ObjectId("4e8ae86d08101908e1000001"), "name" : ["Name"], "zipcode" : ["2223"] } { "_id" : ObjectId("4e8ae86d08101908e1000002"), "name" : ["Another ", "Name"], "zipcode" : ["2224"] } 我目前可以获取与特定数组大小匹配的文档: db.accommodations.find({ name : { $size : 2 }}) 这样可以正确返回name数组中包含2个元素的文档。但是,我不能执行$gt命令返回该name字段的数组大小大于2的所有文档: db.accommodations.find({ name : { $size: { $gt : 1 } }}) 如何选择name尺寸大于一个的数组(最好不必修改当前数据结构)的所有文档?

7
何时在MongoDB上使用CouchDB,反之亦然
我陷入了这两个NoSQL数据库之间。 在我的项目中,我将在数据库中创建数据库。例如,我需要一个创建动态表的解决方案。 因此,用户可以创建具有列和行的表。我认为MongoDB或CouchDB都将对此有所帮助,但我不确定是哪一个。我还将需要有效的分页。

10
MongoDB关系:嵌入还是引用?
我是MongoDB的新手-来自关系数据库背景。我想设计一个带有一些注释的问题结构,但是我不知道该使用哪种关系进行注释:embed或者reference? 一个带有一些注释的问题,例如stackoverflow,将具有以下结构: Question title = 'aaa' content = bbb' comments = ??? 首先,我想使用嵌入的注释(我认为embed在MongoDB中建议这样做),如下所示: Question title = 'aaa' content = 'bbb' comments = [ { content = 'xxx', createdAt = 'yyy'}, { content = 'xxx', createdAt = 'yyy'}, { content = 'xxx', createdAt = 'yyy'} ] 显而易见,但是我担心这种情况:如果要编辑指定的注释,如何获取其内容和问题?没有_id让我找到一个问题,也没有question_ref让我找到它的问题。(我真是个新手,如果不使用_idand 我不知道有没有办法做到这一点question_ref。) 我必须ref不用embed吗?然后,我必须创建一个新的评论集吗?
524 mongodb  reference  embed 

13
如何获取mongodb中的最后N条记录?
我找不到任何记录在案的文件。默认情况下,find()操作将从头开始获取记录。如何获取mongodb中的最后N条记录? 编辑:我也希望返回的结果从最近到最近排序,而不是相反。
523 mongodb  record 

10
何时使用MongoDB或其他面向文档的数据库系统?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我们提供了一个用于视频和音频剪辑,照片和矢量图像的平台。我们从MySQL作为数据库后端开始,最近加入了MongoDB来存储文件的所有元信息,因为MongoDB更符合要求。例如:照片可能具有Exif信息,视频也可能具有音轨,我们也想在其中存储元信息。视频和矢量图形不共享任何常见的元信息等。因此,我知道MongoDB非常适合存储此非结构化数据并使其可搜索。 但是,我们将继续开发平台并添加功能。现在,下一步就是为我们的用户提供一个论坛。现在出现的问题是:使用MySQL数据库,这对于存储论坛和论坛帖子等是一个不错的选择,还是为此使用MongoDB? 所以问题是:何时使用MongoDB以及何时使用RDBMS。如果可以选择的话,您会选择mongoDB还是MySQL?为什么选择它?
516 mysql  mongodb 


11
查找数组字段不为空的MongoDB记录
我所有的记录都有一个名为“图片”的字段。该字段是字符串数组。 我现在想要该数组不为空的最新10条记录。 我已经在Google周围搜索了,但是奇怪的是,我在这方面没有发现太多。我已经读过$ where选项,但是我想知道这对本机函数有多慢,以及是否有更好的解决方案。 即使这样,它也不起作用: ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind() 不返回任何内容。this.pictures没有长度位的保留确实有效,但是当然它也返回空记录。
502 mongodb  mongoose 

10
查找包含特定值的数组的文档
如果我有这个架构... person = { name : String, favoriteFoods : Array } ...在其中favoriteFoods用字符串填充数组。我怎么能找到所有以猫鼬为食的人? 我一直希望以下方面的东西: PersonModel.find({ favoriteFoods : { $contains : "sushi" }, function(...) {...}); (我知道$containsmongodb中没有此功能,只是在知道解决方案之前先解释了我期望找到的内容)
499 mongodb  mongoose 

19
如何在MongoDB中执行等效的SQL Join?
如何在MongoDB中执行等效的SQL Join? 例如,说您有两个集合(用户和评论),我想提取所有pid = 444的评论以及每个用户的信息。 comments { uid:12345, pid:444, comment="blah" } { uid:12345, pid:888, comment="asdf" } { uid:99999, pid:444, comment="qwer" } users { uid:12345, name:"john" } { uid:99999, name:"mia" } 有没有一种方法可以一次性提取所有带有特定字段的评论(例如... find({pid:444})),以及与每个评论关联的用户信息? 此刻,我首先要获取符合我的条件的注释,然后找出该结果集中的所有uid,获取用户对象,并将它们与注释结果合并。好像我做错了。
498 mongodb  join 

19
MongoDB或CouchDB-适合生产吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 5年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我想知道是否有人可以告诉我MongoDB或CouchDB是否已准备好用于生产环境。 我现在正在研究这些存储解决方案(目前我偏爱MongoDB),但是这些项目还很年轻,因此我可以预见,我将不得不非常努力地说服我的经理我们应该采用这种方法。新技术。 我想知道的是: 今天,谁在生产环境中使用MongoDB或CouchDB? 您如何使用MongoDB / CouchDB? 当您采用这种新的存储机制时遇到了什么问题(如果有的话)(以及如何克服它们)? 您如何处理必须处理的任何迁移问题? 您想分享这些解决方案中的任何一个的好/坏经历吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.