我想知道是否有一种方法(配置/操作),它允许更新(从插入的记录中添加新数据,如save())数据库中的现有文档,同时尝试插入违反唯一的其他文档索引..?
由于
我有SocialProfile文档,它代表与特定社交网络相关的域用户配置文件。
我想在该网络中使用社交网络类型+用户唯一的组合作为唯一。
{type:“FB”,unique:“1111111111”}
起初我考虑将这两个字符串合并为一个并使用连接作为文档ID,然后在保存文档时自动发生upsert,但如果我错了,感觉错误的方法是正确的。
更有意义的是将这些属性定义为复合唯一索引。
我希望能够根据该索引执行这些文档的upsert ..
我正在使用Spring Data框架,我如何支持这种操作以及特定的spring数据。
谢谢你的帮助
答案 0 :(得分:3)
正如克里斯所说,upsert可能是正确的方法。你有一些示例数据吗?这是一个简单的例子:
db.coll.update(
/* query */ {keys:"from", unique:"index"},
/* new document */ {keys:"from", unique:"index", new_value:"foo"},
/* upsert */ true,
/* multi */ false);
它将查询包含查询中指定的键的文档,如果存在,它将使用提供的文档更新该文档。如果该文档不存在,它将创建一个新文档。