我希望让用户输入他们的兴趣,这些兴趣可能已经存在或者可能不存在于系统中,并将它们存储在无模式数据库(具体的GAE存储)中,以便我可以轻松地发现具有类似功能的用户利益。
我想要做的一个类似的例子是LinkedIn的技能形式。
我熟悉如何在SQL数据存储区中完成此操作,但我正在尝试扩展我对无模式数据存储的了解。任何帮助将不胜感激。
答案 0 :(得分:0)
当用户输入新兴趣时,您可以检查具有此兴趣的实体是否已存在。如果是,则将该实体的id添加到用户的兴趣列表中。如果不是,则首先为此兴趣保存一个新实体,然后使用该实体的id。
例如,在Java中,使用低级数据存储区API,您可以执行以下操作:
public void saveUser(User user) {
Entity userEntity = user.getId() == null ? new Entity("User") : new Entity("User", user.getId());
if (user.getInterests() != null) {
// user.getInterests() returns a collection, e.g. an ArrayList<Long>
userEntity.setProperty("interests", user.getInterests());
}
datastore.put(userEntity);
}
public User getUser(Entity entity) {
User user = new User();
user.setId(entity.getKey().getId());
user.setInterests(entity.getProperty("interests"));
return user;
}
请注意该物业&#34;兴趣&#34;已建立索引,因此您可以运行查询以查找具有特定兴趣的所有用户。