我需要以最“最佳实践方式”将对象添加到嵌套在另一个对象内的数组中。
问题是我不想从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);
是否有可能或者我必须以更昂贵的方式做到这一点?
使用:
答案 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是集合的名称。