- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在具有双向关系的 User
之间创建关系的正确方法是什么?
假设我有:
class User
include Neo4j::ActiveNode
property :name, type: String
property :created_at, type: DateTime
property :updated_at, type: DateTime
has_many :both, :friends, model_class: 'User', type: 'connection' unique: true
has_many :in, :followers, model_class: 'User', type: 'connection', unique: true
has_many :out, :following, model_class: 'User', type: 'connection', unique: true
end
然后,
users = [
User.create(name: 'Foo'),
User.create(name: 'Bar'),
User.create(name: 'Baz'),
]
这会是合适的方法吗?这似乎非常低效:
users.each do |user|
user.friends << users.reject { |u| u == user }
end
最佳答案
如果你想确保user.friends
返回其他两个用户,我实际上会这样做:
users.each do |user|
other_users = users.reject { |u| u == user || user.friends.include?(u) }
user.friends << other_users
end
现在 效率极低!它创建一个新数组并针对每个用户对数据库执行额外的查找。 (FWIW,include?
查找速度非常快。您也可以删除 reject
并再次遍历 users
以加快速度。)仍然有必要完成此操作,否则,您将创建重复关系.
设置unique: true
在你的协会中只会在一个方向上拯救你。针对 has_many :both
的查询协会使用与方向无关的 Cypher MATCH
但是CREATE
Action 总是需要方向的,所以它们从左边的节点到右边的节点。 user1.friends << user2
和 user2.friends << user1
将在两个节点之间创建两个关系,每个方向一个。
编辑
正如您在 your own comment 中指出的那样使用 user.friends = [other_friends]
解决 Neo4j.rb 上的问题将始终清除所有现有关系并防止重复。这是解决问题的一种非常酷的方法。
关于ruby - 在 Neo4j.rb 中设置 "friends"(双向关系)的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781450/
我想知道将来对我来说最简单的方法是什么,可以使查询既有效又不那么复杂。 我应该像这样保存双向关系吗 from_id=1, to_id=2from_id=2, to_id=1 或者只创建一个唯一的行 f
假设您有一个拥有十亿用户的社交网络。在每个用户的页面上,您想要显示该用户的 friend 数、 friend 的 friend 等等,最多五度。友谊是相互的。计数不需要立即更新,但它们应该是精确的。
public void notMyFriend(Student student1) { System.out.println("Friends who are not my frien
我有如下3个表格 用户 - id integer primary_key - user_name friend - id autoincrement primary_key - user1 integ
如何从 Friends 表中获取 friend 列表以及我 friend 的 friend 数(不包括我的 friend 数) friend 表"tbl_users_friends 字段 1:id字段
我的 MySQL 表结构是这样的。 USER int id varchar username FRIEND_LIST int user_id int friend_id 对于每个 friend 关系,
假设 a,b,c 和 b,d,e 和 c,f,g 和 a,e,g,h 是 friend 。所以 获取共同好友 b/w a&b: MATCH (me:User {username:'a'}) -[r:F
我正在开发“可能的 friend ”功能。我需要显示所有不是我 friend 的 friend 的 friend ,也不要发送我或没有我的待处理请求 FRIENDSHIPS user_id frien
如果两个用户是 friend ,我在“ friend ”表中有一个条目,如下所示: table: friends ------------------------ uid1
我有一个 friend 表,用于跟踪数据库中的关系 - 我将一个查询与子查询放在一起,该子查询从 friend 的 friend 那里获取个人资料信息 我的 friend 表如下所示 - id 双向出
我想结交 friend 的 friend 的 friend 。我得到了结果,但我不确定我的查询是否正确。我正在使用嵌套选择。 我的问题是: 查询是否正确? 我如何使用 join 执行此查询? 这是我的
假设我有一个包含 friend 属性的用户对象。这个 friends 属性是其他用户对象的数组,因此是你的 friend 。找到你 friend 的 friend 但不是你 friend 的最快算法是
我想结交我的 friend 以及 friend 的 friend ,但仅限于二级 friend 我的表结构是这样的 user_id friend_user_id 1 2 1
为了了解使用 Neo4J 建立 friend 关系的优势,我在 MySQL 数据库上创建了一张用于 Persons 的表(“Persons”,20900 个数据集): id | name --
假设我有一个名为“ friend ”的表,对于每个友谊,我添加两个条目。例如,如果用户 1 和 2 是 friend ,我们将有: uid1 uid2 ---------- 1 2 2 1
在我的图形数据库中,我有 Twig 和树叶。分支可以“包含”叶子,分支可以“包含”分支。 如何使用 Gremlin 找到与给定分支直接或间接相关的所有叶子? 我让这个在 Cypher 中工作: STA
我正在尝试使用 iPhone Facebook SDK 获取我 friend 的 friend 列表。我尝试了一种使用 FQL 和 Graph API 的方法,但在这两种情况下我都遇到了错误: "Ca
我有这个 MySQL 表: 假设我以用户 1 的身份登录,正在浏览用户 2 的个人资料。由于我们是共同的 friend (1 是 2 的 friend ,2 是 1 的 friend ),我需要回应“
我想得到我 friend 的 friend 不是我 friend 的 friend 。我有一张这样的 table :用户 friend (idUser,idUserFriend) 我在想这样的事情:
我有这个 Cypher 查询... match (p:Person{userid:8432})-[r:friends_with]->(p1:Person)-[r2:friends_with]->(p2
我是一名优秀的程序员,十分优秀!