将 PouchDB 与 MongoDB 一起使用
Posted
技术标签:
【中文标题】将 PouchDB 与 MongoDB 一起使用【英文标题】:Using PouchDB with MongoDB 【发布时间】:2014-08-14 14:35:03 【问题描述】:我从未使用过 CouchDB。我想在我的客户端应用程序上使用 PouchDB,但我不确定它是否可以与 MongoDB 集成,因为 Pouch 旨在与 CouchDB 一起使用。虽然我的 API 是用 php 编写的,但我没有像在 CouchDB 中那样使用任何类型的 REST API 来连接数据库。
是否有可以与 MongoDB 一起使用的 PouchDB 等价物?还是我无处可去?
【问题讨论】:
【参考方案1】:PouchDB 贡献者在这里。 :) 这实际上是我们经常遇到的一个问题,考虑到 MongoDB 的流行,这是可以理解的。
简短的回答是:不,没有办法获得可以插入现有 MongoDB 数据库的 PouchDB。您可能想改用Meteor.js。
长答案是 CouchDB 和 MongoDB 并不等同,特别是 CouchDB 是自下而上设计用于同步的。 a good write-up by Jan Lenhardt 解释了它是如何工作的。 PouchDB/CouchDB 同步的部分魔力来自这种设计,而 Mongo 没有。
事实上,即使 PouchDB 使用 Mongo 作为后端(这不在可能的范围内;we already support Redis and Riak),您也无法按原样使用现有数据库,因为 PouchDB 需要重新构建这个在 Mongo 上的修订处理模式。因此,您必须重写您的应用程序才能使用 PouchDB/CouchDB API。
更新:PouchDB 将很快通过pouchdb-find plugin 支持类似 Mongo 的查询语言。
【讨论】:
有趣。很高兴从源头上了解事情。 :) 我不确定我是否理解为什么可以支持 Redis 和 Riak 但不支持 MongoDB。如果有的话,对于像 pouchdb-server 这样的类似 CouchDB 的服务器,MongoDB 听起来要在后台实现的工作要少得多。 Redis 和 Riak 是“支持”的,因为 PouchDB 可以将它们用作存储引擎。不过,这只是出于学术原因才真正有趣。您不想在生产中实际使用它,因为 PouchDB 基本上将它们用作愚蠢的键值存储,并且您实际上不能直接使用这些数据库 - 相反,您需要使用 PouchDB 对它们的抽象。上面的链接解释了这些概念。 哇,更新似乎很有趣,因为 Azure Cosmos 也可以使用 Mongo API 来访问它...#goodtimes【参考方案2】:我看到了minimongo 项目。 我还没试过。据我了解,minimongo that is used in the meteor project 是一样的。项目描述说它通过 http 进行服务器同步。但它没有持久性,索引。
【讨论】:
以上是关于将 PouchDB 与 MongoDB 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
同一设备上的每个用户一个pouchDB与单个CouchDB同步
将 MongoDB 与 AWS Elastic Bean 应用程序一起使用
如何将 MongoDB 子文档 _id 与 EJS 一起使用