Tag: mongodb java

MongoDB中cursor.count()和cursor.size()之间的区别

MongoDB的DBCursor的cursor.count()和cursor.size()方法有什么DBCursor ?

MongoDB Java驱动程序:autoConnectRetry

我们当前的连接配置如下所示: MongoClientOptions.builder() .autoConnectRetry(true).maxAutoConnectRetryTime(1200000) .socketTimeout(30000).connectTimeout(15000).build(); // SocketTimeout: 30s, ConnectionTimeout 15s, ReconnectRetry: 20min autoConnectRetry和maxAutoConnectRetryTime在当前版本( 源代码 )中已弃用,将被删除:“此方法没有替代。使用connectTimeout属性来控制连接超时。” 我认为重试和连接超时是两个不同的事情。 有谁知道为什么这会改变以及这有什么(内部)影响?

Spring Data MongoDB之间的日期

我使用spring数据mongodb。 我想要两个日期之间的记录。 以下MongoDB查询有效: db.posts.find({startDate: {$gte: start, $lt: end}}); 我尝试过的Spring数据查询对象代码转换不起作用: Query query = new Query(); query.addCriteria(Criteria.where(“startDate”).gte(startDate) .and(“startDate”).lt(endDate)); 构建我需要的Mongo查询的方法调用的正确顺序是什么?

如何使用mongodb java驱动程序导入/导出MongoDB数据库的所有集合?

是否有任何函数可以使用java驱动程序导入和导出mongodb数据库的所有集合。 就像使用命令提示符的mongodump和mongorestore一样。

将数据附加到现有gridfs文件

我可以看到java mongo驱动程序不提供从现有gridFS文件com.mongodb.gridfs.GridFSFile获取OutputStreamfunction 我必须直接创建GridFSInputFile或使用gridFs.createFile()方法。 是缺少java驱动程序还是限制gridfs? 您能否建议除创建新文件/删除旧文件之外的任何解决方法? 谢谢

MongoSocketReadException:过早地到达流的末尾(在一段时间不活动之后)

在一段时间不活动后,我在find调用(默认Java驱动程序)上收到此错误。 我试图添加手动心跳(写入上限集合),但它没有帮助。 我只在连接到compose上的实例时(即不在本地上下文中)得到问题。 MongoDB版本是3.2.8,最新的驱动程序(3.3),使用Java 8。 任何想法 ?

如何在GridFS中执行更新操作(使用Java)?

我正在使用Mongo-Java-Driver 2.13我在GridFS中存储了一个PDF文件( 大小为30mb) 。 我能够轻松地执行插入,删除和查找操作。 MongoClient mongo = new MongoClient(“localhost”, 27017); DB db = mongo.getDB(“testDB”); File pdfFile = new File(“/home/dev/abc.pdf”); GridFS gfs = new GridFS(db,”books”); GridFSInputFile inputFile = gfs.createFile(pdfFile); inputFile.setId(“101”); inputFile.put(“title”, “abc”); inputFile.put(“author”, “xyz”); inputFile.save(); 数据保存在books.files和books.chunks集合中。 现在我要更新 : 案例1:pdf文件 案例2:标题或作者 如何在GridFS中对案例1执行这些更新操作? 我开始知道我需要维护我的文件的多个版本并选择正确的版本。 有人可以说清楚吗? 编辑 : 我可以轻松更新元数据(标题,作者)。 GridFSDBFile outputFile = gfs.findOne(new BasicDBObject(“_id”, 101)); BasicDBObject updatedMetadata = […]

将MongoDB 3中的Document对象转换为POJOS

我将一个带有java.util.Date字段的对象保存到MongoDB 3.2实例中。 ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(myObject); collection.insertOne(Document.parse(json)); 字符串包含: “captured”: 1454549266735 然后我从MongoDB实例中读取它: final Document document = collection.find(eq(“key”, value)).first(); final String json = document.toJson(); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); xx = mapper.readValue(json, MyClass.class); 反序列化失败: java.lang.RuntimeException:com.fasterxml.jackson.databind.JsonMappingException:无法从START_OBJECT标记中反序列化java.util.Date的实例 我看到“document.toJson()”创建的json字符串包含: “captured”: { “$numberLong”: “1454550216318” } 而不是最初的(“捕获”:1454549266735)MongoDB文档说他们开始使用“MongoDB Extended Json”。 我试过jackson1和2解析它 – 没有运气。 将MongoDB 3提供的Document对象转换为Java POJO的最简单方法是什么? […]

Mongodb避免重复输入

我是mongodb的新手。 我可以知道如何避免重复输入。 在关系表中,我们使用主键来避免它。 我可以知道如何使用java在Mongodb中指定它吗?

如何在MongoDB中更新特定文档的特定嵌入文档的值?

我的文档中有以下结构: { _id : ObjectId(“43jh4j343j4j”), array : [ { _arrayId : ObjectId(“dsd87dsa9d87s9d7”), someField : “something”, someField2 : “something2” }, { _arrayId : ObjectId(“sds9a0d9da0d9sa0”), someField : “somethingElse”, someField2 : “somethingElse2” } ] } 我想更新someField和someField2但仅针对数组中的一个项目,即匹配_arrayId的项目 (例如_arrayId : ObjectId(“dsd87dsa9d87s9d7”) ;并且仅针对此文档(例如_id : ObjectId(“43jh4j343j4j”) )没有别的。 arrayIds并不是文档所特有的,这就是我需要它来用于特定文档的原因。 如果我想在数组中为它所存在的每个文档更新该值,我可以使用$ positional operator ,但这不是我想要的。 我试图在java中实现这一点,但命令行解决方案也可以。