[英]Is ArangoDB edge document right place to put additional key-value?
在MySql中,我们使用两个模型用户和友谊创建简单的用户友谊数据库。
模型的友谊包含关键:
在ArangoDB中做相同的正确方法是什么?是否可以有一个带有附加键值的“友谊”边缘文档? 是否可以执行更新边缘文档? 另外,是否有可能在执行请求后显示这些值?
给我一个例子。
首先创建一个“用户”集合和一个“友谊”集合。
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"
}
}
]
返回将返回整个文档。 您也只能返回block属性
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
}
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.