MongoDB $ push操作符是否可以添加嵌入式文档?

时间:2012-06-05 21:51:10

标签: mongodb spring-3 mongodb-java

我正在使用MongoDB和Spring 3.我有以下域对象:

@Document(collection = "users")
public class User {

    @Id
    private String id;

    private List<Post> posts;
}

我想向Post添加User,但最好/最有效的方法是什么?我可以看到一种以编程方式执行此操作的方法 - 找到用户,将新的帖子对象添加到列表中并再次保存用户 - 但我认为这不是非常优雅或高效。

从文档中我似乎需要使用$push运算符,但我似乎无法找到有关如何使用Spring的MongoTemplate执行此操作的任何示例。任何人都可以提供一个例子吗?

1 个答案:

答案 0 :(得分:6)

$ push是将新文档添加到数组的正确方法。

您可以在this presentation中看到示例代码(幻灯片22)。相关的行将是:

mongoTemplate.updateFirst(collection, 
... new Query(where("_id").is(...)),
... new Update().push("field", dbo));