我目前正在评估Mongo和CouchDB存储数据点(分析)。
在我之前与CouchDB的互动中,我喜欢它的基于JSONP的界面。我可以从纯JavaScript执行所有CRUD操作。 只需运行CouchDB并编写一些JavaScript - 无需服务器端组件。
将此与Mongo进行比较时,是否有可用的REST界面? 是否可以纯粹从Mongo的javascript中做CRUD?
谢谢!
答案 0 :(得分:36)
MongoDB没有完整的REST接口,主要是因为服务器使用本机二进制协议来提高效率。您可以在官方documentation中找到几个REST包装器:
RESTHeart(Java 8)是MongoDB生态系统的数据REST API服务器部分。 RESTHeart使用基于HAL的标准表示格式,通过BSON的严格模式表示支持完整的本机mongodb数据。 它为CRUD和数据模型操作提供API,内置身份验证和授权,并且它支持CORS。 它易于安装,并且可以使用码头集装箱。 RESTHeart也快速轻巧(占用大约7 Mb,内存使用约200 Mb)。
Sleepy Mongoose(Python)是MongoDB的全功能REST接口,可作为单独的项目使用。
MongoDB Rest(Node.js)是MongoDB的 alpha REST接口,它使用MongoDB Node Native驱动程序。
Simple REST Interface为方便起见,mongod进程包括一个简单的只读REST接口。对于完整的REST功能,我们建议使用外部工具,例如Sleepy.Mongoose。
答案 1 :(得分:7)
另一种选择(无耻插件)是 DrowsyDromedary 。
我们开发了Drowsy,因为对Mongo的其他REST选项感到沮丧。即,我们发现:
困倦的猫鼬并不是真正的RESTful。这是一个hacky HTTP接口,不遵循REST约定;它不使用标准的REST HTTP方法,它不使用URL来正确识别资源......我们还发现了限制最大结果数量的选项(默认情况下是受限制的)而非混淆。
mongodb-rest 提供了一个合适的REST界面,但我们发现它很难运行。它会经常死亡,并导致我们的系统管理员疯狂(无可否认,他们在运行node.js服务方面经验不足)。
内置REST界面本来就很棒,但它是只读的意味着它对我们的需求来说几乎没用。
DrowsyDromedary ,旨在解决上述许多问题:
bundle
,然后rackup
,然后运行)。它也可以在Apache或nginx下轻松部署。答案 2 :(得分:5)
修改强>
Python Eve是一个很棒的解决方案。我发现它非常易于使用且具有高度可配置性。
Eve是一个专为人类设计的开源Python REST API框架 众生。它允许毫不费力地构建和部署 可定制的,功能齐全的RESTful Web服务。
Eve由Flask,Redis,Cerberus,Events提供支持 对于MongoDB和SQL后端[*]。
代码库在Python 2.6,2.7,3.3,3.4和 PyPy。
开始时很简单:
$ curl -i http://example.com/people
HTTP/1.1 200 OK
并用作
import numpy as np
import matplotlib.pyplot as plt
T=4.32*10**19
i=input("Number of iterations ")
h=T/i
a=[0.01]*6000
t=[0.0]*6000
data = np.loadtxt('/home/user/t.txt')
t=data[:]
def f (a):
if a!=0:
c=((0.75/a + 0.044/(a**2) + 0.74*(a**2))**0.5)
return c
else :
return 0
for n in range(0,5998):
k1=f ( a[n] );
k2=f ( a[n]+(h/2)*k1 );
k3=f ( a[n]+(h/2)*k2 );
k4=f ( a[n]+h*k3 );
a[n+1]=(a[n]+(h/6)*(k1 + 2*k2 + 2*k3 + k4))
fo=open("a_of_t.txt", "w")
for item in a:
fo.write("%e\n" % item)
fo.close()
plt.plot(t,a, 'k')
plt.show()
可以在设置文件中轻松定义REST端点模式。
<强>原始强>
我还没有使用它,但RESTHeart看起来像是对此的回答。
从文档中可以轻松设置和使用。
答案 3 :(得分:2)
我强烈推荐它。
答案 4 :(得分:1)
不是真的。为方便起见,mongod进程包括a simple read-only REST interface。要获得完整的REST功能,您需要使用外部工具,例如Sleepy.Mongoose。
答案 5 :(得分:0)
没有。但 mongodb-rest 现在正在向前发展。