Tag: mongodb

将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的最简单方法是什么? […]

spring数据mongodb group by

我在我的项目中使用spring数据Mongodb,并在下面的类中引用我的查询来对结果进行分组: 学生class: @Document(collection = “student”) public class Student { @Id private String id; private String firstName; private String lastName; //other fields //getters & setters } StudentResults(dto): public class StudentResults { private String firstName; private List studentIds; //I need List here public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; […]

java.lang.IncompatibleClassChangeError:实现Mongo类

我无法弄清楚为什么会出现这个错误。 我尝试清理冗余的库等等。 我尝试这样做时收到错误: mongo = new Mongo(host, port); 有趣的是,我可以运行我从IDE(IntelliJ)制作的任何unit testing,但是当我尝试通过Tomcat运行它时,我得到了这个: Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com. sfatandrei.db.MongoManager]: Constructor threw exception; nested exception is java.lang.IncompatibleCla ssChangeError: Implementing class at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInst antiationStrategy.java:110) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(Constructo rResolver.java:280) … 82 more Caused by: java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2889) […]

使用MongoDB-Java驱动程序从数组中删除条目

我有JSON喜欢: { “_id” : “1”, “_class” : “com.model.Test”, “itemList” : [ { “itemID” : “1”, “itemName” : “Foo”, “resources” : [ { “resourceID” : “1”, “resourceName” : “Foo Test1” }, { “resourceID” : “2”, “resourceName” : “Foo Test2” } ] } ] } 我需要能够删除itemList的记录之一。 我做了以下事情: public void removeItemByID(String docID, String itemID) throws Exception { MongoOperations […]

如何使用MongoDb中的jackson将Date字段存储为ISODate()

我试图使用fastxml jackson在mongo集合中持久保存java.util.Date字段的java对象。 问题是objectMapper的默认性质是将Date存储为NumberLong类型。 例如, java.util.Date类型的createdTime字段存储如下: “createdTime” : NumberLong(“1427728445176″) 我想将它存储在mongo Shell中可用的ISODate格式中。 现在,我知道有办法格式化对象映射器以将日期存储在字符串dateformat中。 但我只是在寻找ISODate()格式。 例如”createdTime” : ISODate(“2015-01-20T16:39:42.132Z”) 有没有办法做到这一点 ? 请告知大师。 在此先感谢您的帮助。

如何解决ClassNotFoundException:com.mongodb.connection.BufferProvider?

我正在尝试编写简单的java代码,它在控制台上显示MongoDB集合。 我在我的类路径中添加了mongodb-driver-3.0.0.jar。 但是当我尝试执行代码时,它会在数据库连接线上给出以下错误: 线程“main”中的exceptionjava.lang.NoClassDefFoundError:com /chintan.app.MongoDbJdbc.main中的com / mongodb / connection / BufferProvider(MongoDbJdbc.java:12)引起:java.lang.ClassNotFoundException:com.mongodb.connection位于java.net.URLClassLoader的java.net.URLClassLoader $ 1.run(未知来源)中的.BufferProvider $ java(java).URLClassLoader.findClass中的java.security.AccessController.doPrivileged(本地方法)$ 1.run(未知来源)来自java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher $ AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)… 1 more 以下是我的代码片段: public static void main(String[] args) { MongoClient mongoClient = new MongoClient(“localhost”, 27017); //Exception @SuppressWarnings(“deprecation”) DB db = mongoClient.getDB(“mydb”); System.out.println(“Database connection successfull.”); … … } 这里有什么问题? 我是否需要在类路径中添加另一个jar或者有一些版本问题?

Spring数据和mongodb – 在@Transactional中简单回滚弹簧

我有2个存储库,一个用于mongodb(DocumentRepository),另一个用于hibernate实体(EntityRepository) 我有一个简单的服务: @Transactional public doSomePersisting() { try { this.entityRepository.save(entity); this.documentRepository.save(document); } catch(…) { //Rollback mongoDB here } } 是否可以在“// Rollback mongoDB here”行回滚mongoDB? 我已经从实体部分回滚(Transactional annotation)

用于java的BSON库?

我们在java http://blog.locut.us/main/2009/10/14/which-is-the-best-java-json-library.html中对JSON有很好的支持,但BSON呢。 您知道哪些库为java提供BSON支持? 它显然应该在运行时有效。

如何使用java驱动程序更新mongo db中的文档字段?

参考文献: http://www.mongodb.org/display/DOCS/Java+Tutorial 仍然是mongo db的新手,但我正在尝试更新集合中现有文档的一部分……遗憾的是,上面的链接没有更新示例。 基本上,我只是希望能够: 向文档添加新字段 将文档的现有字段更新为新值 这是我的代码(Grails + Groovy + Java + MongoDB + java驱动程序): def shape = mongo.shapes.findOne(new BasicDBObject(“data”, “http://www.foo.com”)); // get the document mongo.shapes.update(new BasicDBObject(“_id”, shape._id), new BasicDBObject(“isProcessed”, 0)); // add a new “isProcessed” field set to 0 mongo.shapes.update(new BasicDBObject(“_id”, shape._id), new BasicDBObject(“data”, “http://www.bar.com”)); 这几乎破坏了整个对象……我可能会尝试修改原始形状对象然后在其上运行更新。 但在那之前, 是否有人有更新单个字段(而不是整个文档)的经验? 编辑: 我只是尝试了它,并且能够通过发送整个对象以及新的和/或更新的字段来成功更新。 我想知道驱动程序是否足够智能,只更新最小的更改子集,或者只是盲目更新整个事物? (在下面的例子中,它是仅仅通过电线或整个形状文档更新foo字段?) 码: […]

MongoDb在其java驱动程序中的$ set等价物

有没有办法可以通过Java驱动程序修改MongoDb中某个键的值。 我尝试了以下内容: someCollection.update(DBObject query, DBObject update); someCollection.findAndModify(DBObject query, DBObject update); 但这两个函数都完全用更新的文档替换查询的文档。 在mongo shell中使用$ set的情况下,只更新特定键的一个值的方法是什么。(除了创建一个全新的文档,其中复制了所有字段并更新了其中一个字段)。