使用Java springdata保存带有上限数组($ slice和$ sort)的mongoDB文档

编程入门 行业动态 更新时间:2024-10-25 17:23:05
本文介绍了使用Java springdata保存带有上限数组($ slice和$ sort)的mongoDB文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用mongoDB和Java SpringData开发日志寄存器.

I'm developing a log register using mongoDB and Java SpringData.

这里用MongoDb限制的子集合讨论了mongoDB的结构,但是我会使用Java .最重要的是,我有一个包含一个或多个字段和一个上限数组的文档.

Here MongoDb capped sub-collection talks about mongoDB structure, but I would do with Java. The most important thing it's that I have a document with one or more fields and a capped array.

Java中是否有某种方法或方法可以做到这一点?

Is there some method or way in Java to do this?

我的对象就像:

user = { name: String, latest_messages: [String] (capped to a 100 elements) }

在Java中:

public class MessageLog { private ObjectId id; private String name; private List<Message> messages; }

位置:

public class Message{ private String text; private String level; private Date date; }

编辑:

我正在将Java与Spring源代码一起使用(mongodb驱动程序v2.10.1: central.maven/maven2/org/mongodb/mongo-java-driver/2.10.1/)

I'm using Java with Spring source (mongodb driver v2.10.1: central.maven/maven2/org/mongodb/mongo-java-driver/2.10.1/)

推荐答案

我终于使用以下代码获得了解决方案:

I finally get the solution using this code:

// Define the search query BasicDBObject searchQuery = new BasicDBObject().append("idU", idUser); // To create the json query to modify BasicDBObject logDocument = new BasicDBObject(); // Create the object and add it to a list (because the $each require a list) List<DBObject> list = new ArrayList<DBObject>(); DBObject object = new BasicDBObject().append("text", logMessage.getText()); object.append("level", logMessage.getLevel()) object.append("date", logMessage.getDate()); list.add(object); // Create the $sort and $slice query at the same time logDocument.append( "$push", new BasicDBObject().append("logs", new BasicDBObject().append("$each", list).append("$sort", new BasicDBObject().append("date", 1)) .append("$slice", -10))); String json = "{findAndModify:\"collectionLog\", query:" + searchQuery.toString() + ", update: " + logDocument.toString() + ", upsert:true}"; try { getMongoTemplate().executeCommand(json); } catch (Exception e) { System.out.println(e); }

我希望它对其他人有用!

I hope it will be useful to someone else!!!

更多推荐

使用Java springdata保存带有上限数组($ slice和$ sort)的mongoDB文档

本文发布于:2023-11-22 15:17:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617939.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   上限   文档   springdata   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!