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

ril*_*lar 4 java mongodb mongodb-query spring-data-mongodb spring-boot

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

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

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

public interface BusinessRepository extends MongoRepository<Business, String> {

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

我想要实现的是这样的:

@Query(value="{ SOME QUERY }")
void putPostInBusinessPosts(String id, Post post);
Run Code Online (Sandbox Code Playgroud)

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

使用:

  • 弹簧靴 1.3.5
  • mongo-java 驱动程序 3.2.2

Ori*_*Dar 8

您无法使用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");
Run Code Online (Sandbox Code Playgroud)

假设业务是集合的名称。