2

我想知道是否有一种方法(配置/操作),它允许更新(从插入的记录中添加新数据,如在 save() 中)数据库中的现有文档,同时尝试插入其他违反唯一索引的文档。 ??

谢谢

我有 SocialProfile 文档,它代表与特定社交网络相关的域用户配置文件。
我想使用社交网络类型+该网络中唯一用户的组合作为唯一。

{ type : "FB" , unique:"1111111111" }

起初我想将这两个字符串合并为一个并使用串联作为文档 ID,然后在保存文档时会自动发生 upsert 但感觉错误的方法是正确的如果我错了。

更有意义的是将这些属性定义为复合唯一索引。
我希望能够根据该索引执行这些文档的更新插入。
我正在使用 Spring Data 框架,我一般如何支持这种操作和在特定的春季数据中。

感谢您的帮助

4

1 回答 1

3

正如克里斯所说,upsert 可能是正确的方法。你有一些示例数据吗?这是一个简单的例子:

db.coll.update(
  /* query */ {keys:"from", unique:"index"}, 
  /* new document */ {keys:"from", unique:"index", new_value:"foo"}, 
  /* upsert */ true, 
  /* multi */ false);

它将使用查询中指定的键查询文档,如果存在,它将使用提供的文档更新该文档。如果该文档不存在,它将创建一个新文档。

于 2012-09-11T20:18:04.967 回答