在java mongodb中将对象添加到数组中

时间:2016-07-08 08:07:30

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

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

问题是我不想从db中提取整个数组只是为了添加一个新对象。必须有更好的方法来执行此操作,例如只需通过查询将新对象添加到数组中吗?

至于现在我用包含的帖子提取一个Business对象,添加新帖子然后更新Business对象。

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-boot 1.3.5
  • mongo-java-driver 3.2.2

1 个答案:

答案 0 :(得分:4)

使用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是集合的名称。