在MySql中,我们用用户和友谊两种模型创建简单的用户友谊数据库。
模范友谊包含钥匙:
在ArangoDB中做同样的事情的正确方法是什么,是否会有一个“友谊”边缘文档,并添加键值?是否可以执行更新边缘文档?此外,这些值是否有可能在执行请求后显示出来?
发布于 2015-06-22 12:46:33
举个例子。
首先创建一个“用户”集合和一个“友谊”集合。
arangosh [_system]> db._create("users");
[ArangoCollection 33746098, "users" (type document, status loaded)]
arangosh [_system]> db._createEdgeCollection("friendship");
[ArangoCollection 33877170, "friendship" (type edge, status loaded)]创建两个用户
arangosh [_system]> db.users.save({_key: "you"});
{
"_id" : "users/you",
"_rev" : "34598066",
"_key" : "you"
}
arangosh [_system]> db.users.save({_key: "me"});
{
"_id" : "users/me",
"_rev" : "34794674",
"_key" : "me"
}以及他们之间的关系
arangosh [_system]> db.friendship.save("users/me", "users/you", {});
{
"_id" : "friendship/35515570",
"_rev" : "35515570",
"_key" : "35515570"
}检查用户
arangosh [_system]> db._query("FOR u IN users RETURN u").toArray()
[
{
"_id" : "users/me",
"_rev" : "34794674",
"_key" : "me"
},
{
"_id" : "users/you",
"_rev" : "34598066",
"_key" : "you"
}
]和他们的邻居
arangosh [_system]> db._query("FOR u IN users RETURN { user: u, friends: NEIGHBORS(users, friendship, u, 'outbound') }").toArray()
[
{
"user" : {
"_id" : "users/me",
"_key" : "me",
"_rev" : "34794674"
},
"friends" : [
"users/you"
]
},
{
"user" : {
"_id" : "users/you",
"_key" : "you",
"_rev" : "34598066"
},
"friends" : [ ]
}
]添加“块”
arangosh [_system]> db._query("FOR f IN friendship FILTER f._from == 'users/me' and f._to == 'users/you' UPDATE f WITH { block: true } IN friendship RETURN { before: OLD, after: NEW }").toArray()
[
{
"before" : {
"_id" : "friendship/35515570",
"_rev" : "35515570",
"_key" : "35515570",
"_from" : "users/me",
"_to" : "users/you"
},
"after" : {
"block" : true,
"_id" : "friendship/35515570",
"_rev" : "63892658",
"_key" : "35515570",
"_from" : "users/me",
"_to" : "users/you"
}
}
]返回将返回整个文档。您还只能返回块属性。
arangosh [_system]> db._query("FOR f IN friendship FILTER f._from == 'users/me' and f._to == 'users/you' UPDATE f WITH { block: false } IN friendship RETURN { before: OLD.block, after: NEW.block }").toArray()
[
{
"before" : true,
"after" : false
}
]https://stackoverflow.com/questions/30976724
复制相似问题