在MongoDB shell中,如何列出我正在使用的当前数据库的所有集合?
我遇到过许多NoSQL数据库和SQL数据库.有各种参数来衡量这些数据库的优缺点,可扩展性就是其中之一.水平和垂直缩放这些数据库有什么区别?
我被困在这两个NoSQL数据库之间.
在我的项目中,我将在数据库中创建一个数据库.例如,我需要一个创建动态表的解决方案.
因此用户可以创建包含列和行的表.我认为MongoDB或CouchDB对此都有好处,但我不确定是哪一个.我也需要高效的分页.
我想要的不是Redis和MongoDB之间的比较.我知道他们是不同的; 性能和API完全不同.
Redis非常快,但API非常'原子'.MongoDB将占用更多资源,但API非常易于使用,我对此非常满意.
它们都很棒,我想尽可能多地使用Redis进行部署,但是很难编码.我想尽可能多地在开发中使用MongoDB,但它需要一台昂贵的机器.
那么你怎么看待它们的使用呢?什么时候选Redis?什么时候选择MongoDB?
如何为现有集合中的每个文档添加新字段?
我知道如何更新现有文档的字段,但不知道如何向集合中的每个文档添加新字段.我怎么能在mongoshell中做到这一点?
随着基于文档的数据库的NoSQL运动的增长,我最近看了MongoDB.我注意到与如何将项目视为"文档"有惊人的相似之处,就像Lucene(和Solr的用户)一样.
所以,问题是:你为什么要使用NoSQL(MongoDB,Cassandra,CouchDB等)而不是Lucene(或Solr)作为你的"数据库"?
我(我相信其他人)在答案中寻找的是对它们的深入比较.让我们一起跳过关系数据库讨论,因为它们有不同的用途.
Lucene提供了一些重要的优势,例如强大的搜索和重量系统.更不用说Solr的一个方面(Solr很快被整合到Lucene中,是的!).您可以使用Lucene文档来存储ID,并像MongoDB一样访问文档.将它与Solr混合,您现在可以获得基于WebService的负载平衡解决方案.
在讨论MongoDB的类似数据存储和可伸缩性时,您甚至可以对Velocity或MemCached等进程外缓存提供程序进行比较.
MongoDB的限制让我想起了使用MemCached,但我可以使用Microsoft的Velocity,并且对MongoDB有更多的分组和列表收集功能(我认为).无法比内存中的缓存数据更快或更具可扩展性.甚至Lucene都有一个内存提供商.
MongoDB(以及其他)确实具有一些优势,例如API的易用性.新建文档,创建ID并存储它.完成.好,易于.
随着所有的炒作,似乎很难找到何时使用它的可靠信息.所以我提出以下问题,如果这些问题提前是愚蠢的话,我很抱歉:
我假设没有?而且我觉得NoSQL只是为了快速访问的东西,可以从中丢失数据.但我也读到NoSQL应用程序有内置冗余,这样我就不会丢失数据?
如果以上两个例子都不好,你能给我一些我会使用NoSQL的特定业务用例吗?我看到了很多一般性的描述,但没有很多真实的例子.我能想到的唯一事情是用户到用户的消息传递和分析.
谢谢!
nosql ×10
mongodb ×6
couchdb ×2
database ×2
architecture ×1
comparison ×1
couchbase ×1
field ×1
json ×1
jsonb ×1
lucene ×1
memcached ×1
mongo-shell ×1
performance ×1
postgresql ×1
redis ×1
scalability ×1
solr ×1
use-case ×1