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

chr*_*leu 3 mongodb spring-3 mongodb-java

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

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

    @Id
    private String id;

    private List<Post> posts;
}
Run Code Online (Sandbox Code Playgroud)

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

从文档中我似乎需要使用$push运算符,但我似乎无法找到如何使用Spring的MongoTemplate执行此操作的任何示例.谁能提供一个例子?

Asy*_*sky 6

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

您可以在此演示文稿中看到示例代码(幻灯片22).相关的行将是:

mongoTemplate.updateFirst(collection, 
... new Query(where("_id").is(...)),
... new Update().push("field", dbo));
Run Code Online (Sandbox Code Playgroud)

  • 谢谢这个帮助.我使用了以下内容:`mongoTemplate.updateFirst(Query.query(Criteria.where("username").is("username_1")),new Update().push("posts",newPostObject),User.class); "我觉得我有点困惑,因为我试图静态地使用`Update`类 - 就像我在许多例子中看到的那样 - 而且这不允许`push`方法. (2认同)