gpt4 book ai didi

java - Spring Data MongoDB 中的上限数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:52:54 25 4
gpt4 key购买 nike

我是 Spring Data MongoDB 的新手,想知道你是否可以帮助我。基本上,我想要实现的是限制文档中嵌入数组的大小。我看过其他帖子,但它没有使用 spring data mongodb ( Saving with Java springdata a mongoDB document with capped array ($slice and $sort) , MongoDB 2.4's "Limit Number of Elements in an Array after an Update" using C# driver? )。

Sample Document:
{

_id: 1,
scores: [
{ attempt: 1, score: 10 },
{ attempt: 2 , score:8 }
]
}

updateScore() {
查询 query = new Query(Criteria.where("id").is(id));
query.fields().slice("分数", -3);
更新 update = new Update();
update.push("分数", 分数);
mongoOperations.findAndModify(查询、更新、MyDocument.class);
}
调用 updateScore 方法后,我可以看到附加了新的分数,并且它的大小超过了 3。

     <!-- mongodb java driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.13.0</version>
</dependency>

<!-- Spring data mongodb -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.5.4.RELEASE</version>
</dependency>

希望听到您的意见和建议。

最佳答案

您可以将更新更改为如下内容:

Query query = new Query(Criteria.where("id").is(id));
query.fields().slice("scores", -3);
Update update = new Update();
update.push("scores", scores);
update.push("scores", new BasicDBObject("$each", scores).append("$slice", -3));
mongoOperations.findAndModify(query, update, MyDocument.class);
spring-data 尚不支持 push 内的

$slice -> https://jira.spring.io/browse/DATAMONGO-832

关于java - Spring Data MongoDB 中的上限数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com