代码之家  ›  专栏  ›  技术社区  ›  italktothewind

带有Spring数据的MongoDB-来自驱动程序的重复查询

  •  1
  • italktothewind  · 技术社区  · 6 年前

    在执行简单查询时,我有一个重复的查询。文件:

    SomeClass。java:

    @Document(collection = "someCollection")
    public class SomeClass {
    
        private String _id;
        private String someField;
    
        //...
    }
    

    SomeClassRepository。java:

    @Repository
    public interface SomeClassRepository extends MongoRepository<SomeClass, String> {
    }
    

    服务java:

    @Autowired
    private SomeClassRepository someClassRepository;
    
    public SomeClass find(String id){
        return someClassRepository.findOne(id);
    }
    

    应用属性:

    logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
    

    日志文件:

    14:14:46.514 [qtp1658534033-19] DEBUG o.s.data.mongodb.core.MongoTemplate - findOne using query: { "_id" : "40c23743-afdb-45ca-9231-c467f8e8b320"} fields: null for class: class com.somepackage.SomeClass in collection: someCollection
    14:14:46.534 [qtp1658534033-19] DEBUG o.s.data.mongodb.core.MongoTemplate - findOne using query: { "_id" : "40c23743-afdb-45ca-9231-c467f8e8b320"} in db.collection: someDatabase.someCollection
    

    我还试图:

    1) 将@Id注释与名为“someId”的字段一起使用 2) 将@Id注释与名为“Id”的字段一起使用 3) 使用名为“id”的字段(不带@id注释)

    不幸的是,我对数据库总是有两个查询。

    有人知道如何执行单个查询吗?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  3
  •   s7vr    6 年前

    它是唯一一个发送到数据库的查询。您的日志消息来自两个不同的地方。

    第一名: doFindOne 方法- link ;第二名: FindOneCallback 类别- link

    您还可以通过查看db日志来确认日志。更多信息 here