我正在弄清楚将现有的应用程序迁移到Google Cloud Datastore是否容易.目前它存在于MongoDB中,因此从NoSQL到NoSQL,但它似乎并不容易.一个例子.我的应用程序使用对象的层次结构,这就是我喜欢MongoDB的原因,因为它的优雅:
{
"_id" : "31851460-7052-4c89-ab51-8941eb5bdc7g",
"_status" : "PRIV",
"_active" : true,
"emails" : [
{ "id" : 1, "email" : "anexample@gmail.com", "_hash" : "1514e2c9e71318e5", "_objecttype" : "EmailObj" },
{ "id" : 1, "email" : "asecondexample@gmail.com", "_hash" : "78687668871318e7", "_objecttype" : "EmailObj" }
],
"numbers": [
...
],
"socialnetworks": [
...
],
"settings": [
...
]
}
Run Code Online (Sandbox Code Playgroud)
在转向Google Cloud Datastore时,我可以将电子邮件,数字,社交网络,设置等保存为字符串,但这会破坏使用JSON的全部目的,因为我将失去查询的机会.我有很多表格,我有这个问题.
我看到的唯一解决方案是将所有这些移动到不同的实体(表).但在这种情况下,查询量将增加,因此也会增加成本.其他解决方案可能是仅保留ID数组,并在Google Cloud Datoreore上执行像免费解析的关键值(除了流量之外).
这里最好的方法是什么?
我注意到DynamoDB可以添加和删除数组中的项目但是如果要专门更新该项目,如何搜索对象内的特定项目?例如:在MongoDB中,您可以搜索someitem.$.subitem并更新该特定项目.有没有办法如何使用DynamoDB执行此操作?
Item: {
someitem: [
{
subitem: "id",
somevalue: "something"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我会说这是基本功能,但似乎不容易找到(甚至不支持)