java - 将对象添加到java mongodb中的数组

标签 java mongodb spring-boot mongodb-query spring-data-mongodb

我需要以最“最佳实践方式”将一个对象添加到嵌套在另一个对象中的数组。

问题是我不想仅仅为了添加一个新对象而从数据库中提取整个数组。一定有更好的方法来做到这一点,比如通过查询将新对象添加到数组中吗?

至于现在,我拉出一个包含帖子的业务对象,添加新帖子,然后更新业务对象。

public interface BusinessRepository extends MongoRepository<Business, String> {

    @Query(value="{ 'id' : ?0 }", fields="{ 'posts' : 1 }")
    Business findOneIncludeOnlyPosts(String id, Pageable pageable);
}

我想要实现的是这样的:

@Query(value="{ SOME QUERY }")
void putPostInBusinessPosts(String id, Post post);

有可能还是我必须以更昂贵的方式来做?

使用:

  • Spring 启动 1.3.5
  • mongo-java-driver 3.2.2

最佳答案

您无法使用 MongoRepository 实现它。为此,您必须使用 MongoTemplate

我不认为它更昂贵,但可能更冗长。

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

...

Update update = new Update();
update.addToSet("posts", post);
Criteria criteria = Criteria.where("_id").is(id);
template.updateFirst(Query.query(criteria), update, "business");

假设 business 是集合的名称。

关于java - 将对象添加到java mongodb中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38261838/

相关文章:

java - Spring Boot - YML 配置 - 合并时删除条目

java - Spring 请求映射 - 将所有 GET 请求映射到唯一端点

java - 我如何将一个类的对象链接到 Java 中另一个类的对象?

java - android java 如何在嵌套类中覆盖 ParseUser 的 toString

node.js - 使用相同的 POST 请求将文件上传到 MongoDB 和本地服务器

mongodb - 在 Erlang 中创建和修改 MongoDB 中的映射

mongodb - 如何从 MongoDB 集合中获取聚合

spring - 需要类型为 'org.springframework.security.authentication.AuthenticationManager' 的 bean,但无法找到。来自 Spring 安全的消息

java - 仅匹配 "<span>something</span>endofline"而不是 "<span>something</span></span>"

java - 将线程安全对象放在 ThreadLocal 上有什么好处吗?