首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArangoDB边缘文档是否是放置附加键值的正确位置?

问ArangoDB边缘文档是否是放置附加键值的正确位置?
EN

Stack Overflow用户
提问于 2015-06-22 09:43:08
回答 1查看 198关注 0票数 0

在MySql中,我们用用户和友谊两种模型创建简单的用户友谊数据库。

模范友谊包含钥匙:

  • id
  • 来自(参考文献)(钥匙)
  • 致(参考文献)(钥匙)
  • 已创建
  • 已修改
  • 核定数(0 1)
  • 区块(0,1)

在ArangoDB中做同样的事情的正确方法是什么,是否会有一个“友谊”边缘文档,并添加键值?是否可以执行更新边缘文档?此外,这些值是否有可能在执行请求后显示出来?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 12:46:33

举个例子。

首先创建一个“用户”集合和一个“友谊”集合。

代码语言:javascript
复制
arangosh [_system]> db._create("users");
[ArangoCollection 33746098, "users" (type document, status loaded)]

arangosh [_system]> db._createEdgeCollection("friendship");
[ArangoCollection 33877170, "friendship" (type edge, status loaded)]

创建两个用户

代码语言:javascript
复制
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" 
}

以及他们之间的关系

代码语言:javascript
复制
arangosh [_system]> db.friendship.save("users/me", "users/you", {});
{ 
  "_id" : "friendship/35515570", 
  "_rev" : "35515570", 
  "_key" : "35515570" 
}

检查用户

代码语言:javascript
复制
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" 
  } 
]

和他们的邻居

代码语言:javascript
复制
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" : [ ] 
  } 
]

添加“块”

代码语言:javascript
复制
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" 
    } 
  } 
]

返回将返回整个文档。您还只能返回块属性。

代码语言:javascript
复制
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 
  } 
]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30976724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档