标签: spring-mongo

蒙哥表演

我们的测试工具创建n个线程,并在每个线程内执行m次迭代。我们计算最小,平均和最大操作时间。因此,我们会不时看到mongo执行请求的速度非常慢-长达几秒钟。同样,每次首次操作最慢时,我们甚至有意将其从统计数据中排除,而avg和max之间的差异仍然很大。正常吗 我可以消除那些缓慢的操作吗?为什么mongo执行某些请求的速度如此之慢?

下面是我们同时运行插入/获取/删除/更新测试时的单操作模式和混合模式的结果。在混合模式下,thread = 1表示我们为每种测试类型创建了4个线程 Mongo性能测试

我们使用默认值-每个主机100个连接

资源

public void storeMt(MyTestObject myTestObject) {
    mongoTemplate.insert(myTestObject );
  }

  public MyTestObject getMt(long id) {
    MyTestObject result = mongoTemplate.findById(id, MyTestObject.class);
    return result;
  }


@Document
public class MyTestObject implements Serializable {

  private static final long serialVersionUID = 1L;
  @Id
  private long id;
//class contains 20+ fields
.......
Run Code Online (Sandbox Code Playgroud)

performance mongodb spring-data spring-mongo

4
推荐指数
1
解决办法
441
查看次数

Spring Boot Mongo - E11000重复密钥

我正在使用spring-boot-starter-data-mongodb构建一个简单的REST api,并且E11000 duplicate key error在尝试插入第二行时总是得到一个.

Spring的入门指南有一个非常简单的配置,我遵循,但我必须遗漏一些东西.

我已经删除了集合,并开始新鲜,第一个文档保存正常,但第二个文件也尝试保存为id = 0.如何让Spring/Mongo正确增加?

这是我得到的错误:

org.springframework.dao.DuplicateKeyException: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "E11000 duplicate key error index: test.game.$_id_ dup key: { : 0 }" , "code" : 11000}; nested exception is com.mongodb.MongoException$DuplicateKey: { "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "E11000 duplicate key error index: test.game.$_id_ dup key: { : 0 }" , "code" …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-mongo spring-data-mongodb

4
推荐指数
1
解决办法
7563
查看次数

执行 MongoTemplate.aggregate 而不进行行检索

我正在使用 Spring Mongo 驱动程序来执行一个将运行一段时间的大型 mongo 聚合语句。此聚合的输出阶段将聚合的输出写入新的集合中。我永远不需要在内存中检索此聚合的结果。

当我在 Spring boot 中运行此程序时,JVM 在进行行检索时内存不足,尽管我没有使用或存储任何结果。

有没有办法使用 MongoTemplate.aggregate 跳过行检索?

前任:

mongoTemplate.aggregate(Aggregation.newAggregation(
   Aggregation.sort(new Sort(new Sort.Order(Sort.Direction.DESC, "createdOn"))),

   Aggregation.group("accountId")
      .first("bal").as("bal")
      .first("timestamp").as("effectiveTimestamp"),

   Aggregation.project("_id", "effectiveTimestamp")
                        .andExpression("trunc(bal * 10000 + 0.5) / 100").as("bal"),

   aggregationOperationContext -> new Document("$addFields", new Document("history",Arrays.asList(historyObj))),

   // Write results out to a new collection - Do not store in memory
   Aggregation.out("newBalance")
).withOptions(Aggregation.newAggregationOptions().allowDiskUse(true).build()),
   "account", Object.class
);
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-mongo spring-mongodb

4
推荐指数
1
解决办法
1647
查看次数

如何使用 Spring MongoTemplate 查询不区分大小写并包含的内容

我在 MongoDB 中有这样的 JSON 文档

{
  "os" : "Windows 10"
}

{
  "os" : "WINDOWS 8"
}

{
  "os" : "UBunTu 18.04"
}
Run Code Online (Sandbox Code Playgroud)

如何os使用 Spring MongoTemplate 不区分大小写并包含进行查询,以便我可以传递["windows", "ubuntu"] 并从数据库获取所有三个文档

我尝试过类似的方法但没有成功。

String osRegEx = String.join(" | ", new String[]{"windows", "ubuntu"});
query.addCriteria(Criteria.where("os").regex(osRegEx, "i"));
Run Code Online (Sandbox Code Playgroud)

mongodb spring-mongo spring-data-mongodb spring-boot mongotemplate

4
推荐指数
1
解决办法
3382
查看次数

如何更新 MongoDB 中的特定数组元素

我是 MongoDB 的新手。我以以下格式将数据存储在 mongoDB 中

"_id" : ObjectId("51d5725c7be2c20819ac8a22"),
"chrom" : "chr22",
"pos" : 17060409,
"information" : [

        {
                "name" : "Category",
                "value" : "3"
        },
        {
                "name" : "INDEL",
                "value" : "INDEL"
        },
        {
                "name" : "DP",
                "value" : "31"
        },
        {
                "name" : "FORMAT",
                "value" : "GT:PL:GQ"
        },

        {
                "name" : "PV4",
                "value" : "1,0.21,0.00096,1"
        }
],
"sampleID" : "Job1373964150558382243283"
Run Code Online (Sandbox Code Playgroud)

我想将值更新为 11,其名称为Category. 我试过下面的查询:

db.VariantEntries.update({$and:[ { "pos" : 117199533} , { "sampleID" : "Job1373964150558382243283"},{"information.name":"Category"}]},{$set:{'information.value':'11'}})
Run Code Online (Sandbox Code Playgroud)

但是 Mongo 回复了

can't …
Run Code Online (Sandbox Code Playgroud)

mongodb spring-mongo

3
推荐指数
1
解决办法
1183
查看次数

@Version 在 Spring mongo 中没有增加

我已添加 @Enableauditng 作为注释,但 @version 不会自行增加版本。我有@LastModifiedDate,它正在更新但不是@version。

我做错了什么。

我一次又一次地调用 mongoTemplate.save(object) 。

请指教

java groovy spring spring-mongo

3
推荐指数
1
解决办法
4588
查看次数

Mongo连接池(更改连接池的大小)

如何更改mongo连接池大小?

我看到默认是100。有没有办法改变这个值?

我不想通过 spring 来做,有没有办法通过 MongoClient 配置它?

我看到有一个关于 mongoClientOptions 的选项,但我没有看到设置连接池的选项

java spring mongodb spring-mongo mongo-java

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

Spring mongoTemplate线程安全吗?

我定义了这个Bean:

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    <constructor-arg name="mongoConverter" ref="mongoConverter" />
</bean>  
Run Code Online (Sandbox Code Playgroud)

并且我实例化了一个mongoOprations使用此Bean的对象,现在我想知道Spring mongoTemplate线程安全吗?

java multithreading thread-safety spring-mongo

3
推荐指数
1
解决办法
1584
查看次数

如何使用Spring + Mongo更新并添加到子文档列表

我在MongoDB集合中有一个像这样的文档:

{
  id : ... 
  listA:[{
          id: ...,
          thing:...,
          listB:[{...},{...}]
          },...
            ]
}
Run Code Online (Sandbox Code Playgroud)

(顶级ID是正常自动生成的MongoDB ID。子文档对象的另一个ID是我分别生成并推送到列表中的伪ID)

问题:我想(1)添加到listB(2)更改thing

该对象可能非常笨重,并且可能有多个线程正在该对象上运行,因此我想避免先发生findOne,先更新后再save发生场景类型。

我想在Spring Data中以与推送到相似的方式进行操作listA,即

@Autowired
private MongoOperations operations;

public void addStuff(String id, Stuff stuff) {
    operations.updateFirst(Query.query(Criteria.where("_id").is(id)),
            new Update().addToSet("listA", stuff), Stuffs.class);
}
Run Code Online (Sandbox Code Playgroud)

但是,我在生成正确的查询/标准时遇到了麻烦。

提前致谢。

java spring-data spring-mongo

3
推荐指数
1
解决办法
4268
查看次数

如何获取集合中的最大字段值?

data在 mongo db 中有名称的集合。

spring 模型中的文档声明如下所示:

@Document(collection = "data")
public class DataPoint {
    @Id
    private String id;

    private Long counter;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想在数据点条目中找到最大计数器,或者至少找到最大值DataPoint

我试着写:

@Repository
public interface DataPointRepository extends MongoRepository<DataPoint, String> {    
    DataPoint findFirstOrderByCounter();
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我在日志中看到:

org.springframework.data.repository.query.ParameterOutOfBoundsException: Invalid parameter index! You seem to have declare too little query method parameters!
    at org.springframework.data.repository.query.Parameters.getParameter(Parameters.java:207)
    at org.springframework.data.repository.query.Parameters.getBindableParameter(Parameters.java:277)
    at org.springframework.data.repository.query.ParametersParameterAccessor.getBindableValue(ParametersParameterAccessor.java:125)
    at org.springframework.data.repository.query.ParametersParameterAccessor$BindableParameterIterator.next(ParametersParameterAccessor.java:182)
    at org.springframework.data.mongodb.repository.query.ConvertingParameterAccessor$ConvertingIterator.next(ConvertingParameterAccessor.java:186)
    at org.springframework.data.mongodb.repository.query.MongoQueryCreator.from(MongoQueryCreator.java:247)
    at org.springframework.data.mongodb.repository.query.MongoQueryCreator.create(MongoQueryCreator.java:116)
    at org.springframework.data.mongodb.repository.query.MongoQueryCreator.create(MongoQueryCreator.java:60)
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:109)
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:88)
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:73)
    at org.springframework.data.mongodb.repository.query.PartTreeMongoQuery.createQuery(PartTreeMongoQuery.java:85)
    at org.springframework.data.mongodb.repository.query.AbstractMongoQuery.execute(AbstractMongoQuery.java:84) …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-mongo spring-mongodb

3
推荐指数
1
解决办法
5357
查看次数