java - spring data - mongoDB - 为什么要创建多个对象?
问题描述
我有如下代码:
public Foo add(String firebaseId) {
Foo foo = fooRepository.findByFirebase(firebaseId);
if (foo == null) {
foo = new Foo();
}
foo.setFirebaseId(firebaseId);
return fooRepository.save(foo);
}
public interface UsersPlayersRepository extends MongoRepository<Foo, ObjectId> {
Foo findByFirebaseId(String firebaseId);
}
@Document(collection = "foo")
public class Foo {
public Foo() {}
@Id
@JsonIgnore
private ObjectId id;
@JsonProperty
private String firebaseId;
....
但不知何故,我后来在日志中看到了检索错误:
错误] 2019-12-27 01:15:07.985 [http-nio-9000-exec-408] [dispatcherServlet] - servlet [dispatcherServlet] 的 Servlet .service() 在路径 [] 的上下文中抛出异常 [请求处理失败; 嵌套异常是 org.springframework.dao.IncorrectResultSi zeDataAccessException: Query { "$java" : Query: { "firebaseId" : "3OdjeUiCkOeKzH1ETvGL HjH0xLv1" }, Fields: { }, Sort: { } } returned non unique result.] with root原因
我想确保只存储唯一的 Firebase 项目?我的施工有问题吗?
解决方案
推荐阅读
- python - 如何在 GitHub 上的公共存储库中隐藏 YouTube 数据 API 密钥?
- python - 如何对数据框中的唯一值进行分类和分组?
- python - 在反向直角三角形中打印数字
- node.js - mongoose.populate 中的交叉表查询给出错误
- openseadragon - 去除虚线边框
- html - 使用 CSS 从另一个 DIV 进行滑动过渡
- c# - 为什么 Rider 会在我的公共变量中添加“@”?
- typescript - Typescript mixin 受限于 typeof 类
- angular - Portal、ViewContainerRef 和 ngComponentOutlet 有什么区别?
- firebase - 如何根据电子邮件地址和密码从 Firebase 更新或删除用户