标签: mongorepository

如何在使用带有弹簧数据的MongoRepository的查询注释时显示查询

我在spring boot中使用MongoRepository来访问mongo:

public interface MongoReadRepository extends MongoRepository<User, String> {
    @Query(value = "{$where: 'this.name == ?0'}", count = true)
    public Long countName(String name);
}
Run Code Online (Sandbox Code Playgroud)

它可以工作,但我想知道它访问mongo的确切查询

怎么做?

我尝试在下面的属性添加一些配置:

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
logging.level.org.springframework.data.mongodb.repository.Query=DEBUG
Run Code Online (Sandbox Code Playgroud)

并且不工作.

有人可以帮忙吗?

java spring mongodb spring-data mongorepository

28
推荐指数
4
解决办法
2万
查看次数

MongoRepository继承序列化错误

当尝试将继承与MongoRepository for C#结合使用时,我遇到了序列化错误.

真正奇怪的是它可以在很短的时间内工作,但是在说重建或其它失败之后.如果我删除该集合并创建一个新集合,它将一直有效,直到停止或重建.

我的代码看起来像:

public class Organization
{
      // other attributes removed for demonstration simplicity

      public List<Person> People { get;set; }
}

public abstract class Person
{
      public string Id {get;set;}
      public string Name {get;set;}
}

public class Employee : Person 
{
      public string Badge {get;set;}
}

public class Contractor : Person
{
     public string Company {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

当我试图让它像:

static MongoRepository<Organization> apps = new MongoRepository<Organization>();
return apps.Single(c => c.Id == id);
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

MongoDB.Driver.dll中出现"System.IO.FileFormatException"类型的异常,但未在用户代码中处理

附加信息:反序列化API类的People属性时发生错误.Models.Organization:无法创建抽象类的实例.

c# serialization mongodb mongorepository

12
推荐指数
1
解决办法
2119
查看次数

使用MongoTemplate进行Spring启动

我是Spring Boot和MongoDb的新手.尝试使用Mongo Repositories和Spring Boot的一些示例.但经过一些文件发现,Mongo Template将是一个更好的选择.无法使用Mongo Template示例获得正确的Spring Boot.

  1. 有人可以帮我一个例子.

  2. 在尝试使用Mongo模板时,是否需要创建用户定义的存储库接口并扩展存储库或CRUD存储库?

java mongodb mongorepository spring-boot mongotemplate

10
推荐指数
2
解决办法
2万
查看次数

如何使用 MongoRepository 接口更新 mongo db 中的特定字段?

如何在 spring 中使用 MongoRepository 接口更新 mongo db 集合中的特定字段?

java spring mongorepository spring-mongodb

8
推荐指数
1
解决办法
2万
查看次数

Spring boot MongoRepository 中的“找不到类型类的 PersistentEntity”异常

在这里,我在 mongodb 中配置了两个数据库。如本教程(链接)中所述。所以基本上我覆盖MongoDataAutoConfigurationMongoProperties实现。

属性 yml 文件:

spring:
  autoconfigure:
       exclude: 
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

mongodb:
   primary:
     host: 127.0.0.1
     port: 27017
     database: db_admin_crm
   secondary:
     host: 127.0.0.1
     port: 27017
     database: lead_forms
Run Code Online (Sandbox Code Playgroud)

MultipleMongoProperties 类:

@Data
@ConfigurationProperties(prefix = "mongodb")
public class MultipleMongoProperties {

 private MongoProperties primary = new MongoProperties();
 private MongoProperties secondary = new MongoProperties();
    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

MultipleMongoConfig 类:

@Configuration
@RequiredArgsConstructor
@EnableConfigurationProperties(MultipleMongoProperties.class)
public class MultipleMongoConfig {

@Autowired
private final MultipleMongoProperties mongoProperties;

public MultipleMongoConfig() {
    mongoProperties = null;
}


@Primary
@Bean(name …
Run Code Online (Sandbox Code Playgroud)

multiple-databases spring-data-mongodb mongorepository spring-boot

7
推荐指数
0
解决办法
4570
查看次数

MongoRepository findByCreatedAtBetween没有返回准确的结果

我在Mongo的文档结构是这样的:

db.user.find()

{
        "_id" : ObjectId("560fa46930a8e74be720009a"),
        "createdAt" : ISODate("2015-10-03T09:47:56.333Z"),
        "message" : "welcome",
}
{
            "_id" : ObjectId("560fa46930a8e723e720009a"),
            "createdAt" : ISODate("2015-10-03T09:48:25.048Z"),
            "message" : "thank you"
}
Run Code Online (Sandbox Code Playgroud)

当我在Mongo Shell中使用以下查询来查找两个给定时间戳之间的文档时,我得到了正确的结果:

db.user.find({createdAt:{$gte:ISODate("2015-10-03T09:40:25.048Z"),$lte:ISODate("2015-10-03T09:50:56.333Z")}})
Run Code Online (Sandbox Code Playgroud)

我在我的REST服务中使用带有Spring的MongoRepository来使用Java驱动程序.以下是用户存储库:

public interface UserRepository extends MongoRepository<User, String> 
{
       ArrayList<User> findbyCreatedAtBetween(Date d1, Date d2);

}
Run Code Online (Sandbox Code Playgroud)

当我打电话在我的服务中进行以下呼叫时,它不会返回任何结果 userRepository.findbyCreatedAtBetween(2015-10-03T09:40:25.048Z, 2015-10-03T09:50:29.006Z)

但是当我在前一天给出d1时它会返回结果:userRepository.findbyCreatedAtBetween(2015-10-02T09:40:25.048Z,2015-10-03T09:50:29.006Z)

关于如何解决这个问题的任何想法?请帮忙!

java findby mongodb spring-data mongorepository

6
推荐指数
1
解决办法
6208
查看次数

同一Java类的多个MongoDB集合名称

我正在使用Spring的MongoRespository.我有一个类但它被两个方法调用,我想根据调用它的方法将该类存储在Mongo中.如何通过基于mongo中的一个类来拥有两个不同的集合来区分它的使用方式?

现在我在我的dao中有两个存储库接口.

public interface PastOpportunityRepository extends MongoRepository<DMOpportunity, String>,       CustomPastOpportunityRepository {}
Run Code Online (Sandbox Code Playgroud)

public interface PredictiveOpportunityRepository extends MongoRepository<DMOpportunity, String>, CustomPredictiveOpportunityRepository {`
Run Code Online (Sandbox Code Playgroud)

我想避免使用相同的代码创建两个不同命名的类.

java spring mongodb mongorepository

5
推荐指数
1
解决办法
5433
查看次数

如何在更新mongodb中的外部arraylist时在内部arraylist中插入值?

我正在使用Spring MongoDB,现在我遇到了将值插入到arraylist中的问题.这是我的POJO类结构......

public class Search implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    private String id;
    private String searchkey;
    private ArrayList<Lead> leads;
 }
Run Code Online (Sandbox Code Playgroud)

"领导"是另一个POJO类,就像......

public class Lead implements Serializable {

private static final long serialVersionUID = 1L;
private String leadtext;
private String address;
private ArrayList<History> trackrecords;
}
Run Code Online (Sandbox Code Playgroud)

"历史"是另一个POJO类,它就像..

public class History implements Serializable {

private static final long serialVersionUID = 1L;
private String id;
private String changedfield;
private String oldvalue;
private String newvalue;
}
Run Code Online (Sandbox Code Playgroud)

问题是我想在更新一个潜在客户时将数据插入到trackrecords中.有可能在春天mongotemplate .. ?? …

java spring mongodb mongorepository mongotemplate

5
推荐指数
1
解决办法
918
查看次数

Spring Data MongoDB:在Spring Data Repository查找方法上指定提示

我正在实现一个Spring Data Repository,并让我的存储库扩展了MongoRepository。我正在寻找一种在我的findBy方法上指定提示的方法,以便可以控制自己。我曾多次看到将非最佳指标选为获胜计划。

这是我的存储库现在的样子:

public interface AccountRepository extends MongoRepository<Account, ObjectId> {

  @Meta(maxExcecutionTime = 60000L, comment = "Comment" )
  public List<Account> findByUserIdAndBrandId(Long userId, Long brandId);
}
Run Code Online (Sandbox Code Playgroud)

我研究了一堆,发现spring数据中的JPARepository支持@QueryHint批注,但我不认为MongoDb支持该批注。我可以在findBy方法之上指定类似的注释来指定提示吗?

MongoTemplate允许指定提示,但是,我有大量的findBy方法,但我不想在其下方添加一个实现以指定提示。

spring hint mongodb spring-data-mongodb mongorepository

5
推荐指数
1
解决办法
366
查看次数

如何在 mongo 存储库中过滤对象数组

这里我使用 MongoRepository,我需要查询一个对象列表,其中包含对象数组中的某个 id。

文档结构:

{
 "_id" : ObjectId("5ccc1c54a3d5eed9a6b8015a"),
 "email" : "sineth3@gmail.com",
 "name" : "edward3",
 "businessName" : "aroma3",
 "phone" : "07177222233",
 "address" : "no 100 NY",
 "bookletSignups" : [
    {
        "bookletId" : "sample-booklet",
        "contactName" : "john doe"
    },
    {
        "bookletId" : "sample-booklet1",
        "contactName" : "john doe1"
    }
 ],
  "eventSignups" : [
    {
        "eventId" : "sample-event",
        "contactName" : "john doe2"
    },
    {
        "eventId" : "sample-event 1",
        "contactName" : "john doe3"
    }
 ],
  "infoSignups" : [
    {
        "infoRequestId" : "sample-info ",
        "contactName" : …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb mongorepository spring-boot

5
推荐指数
1
解决办法
8416
查看次数