Tag: mongodb

使用Jackson进行Java Mongo DBObject的高效POJO映射

虽然类似于使用MongoDB Java驱动程序将DBObject转换为POJO,但我的问题不同,因为我特别感兴趣使用Jackson进行映射。 我有一个对象,我想转换为Mongo DBObject实例。 我想使用Jackson JSON框架来完成这项工作。 一种方法是: DBObject dbo = (DBObject)JSON.parse(m_objectMapper.writeValueAsString(entity)); 但是,根据https://github.com/FasterXML/jackson-docs/wiki/Presentation:-Jackson-Performance,这是最糟糕的方式。 所以,我正在寻找替代方案。 理想情况下,我希望能够挂钩到JSON生成管道并动态填充DBObject实例。 这是可能的,因为在我的情况下,目标是一个BasicDBObject实例,它实现了Map接口。 因此,它应该很容易适应管道。 现在,我知道我可以使用ObjectMapper.convertValue函数将对象转换为Map,然后使用BasicDBObject类型的映射构造函数递归地将映射转换为BasicDBObject实例。 但是,我想知道我是否可以消除中间映射并直接创建BasicDBObject 。 注意,因为BasicDBObject本质上是一个映射,所以相反的转换,即从标量DBObject到POJO是微不足道的,应该非常有效: DBObject dbo = getDBO(); Class clazz = getObjectClass(); Object pojo = m_objectMapper.convertValue(dbo, clazz); 最后,我的POJO没有任何JSON注释,我希望它保持这种方式。

实现twitter和facebook就像hashtags一样

这可能看起来很愚蠢..而且没有研究的问题,但相信我不是。 我做了一些研究。 其中一个将是以下链接: http : //www.quora.com/Twitter-1/How-does-Twitter-implement-hashtags 此外,我不是在寻找一个完整的解决方案..我会努力工作,但我只需要一些指导,只想知道我应该采用哪种方式? 我想实现twitter,现在甚至像我的应用程序的hash标签一样。所以用户可以添加带有主题标签的消息,而其他人可以搜索它们…就像趋势和相关内容一样。 我们在存储技术堆栈中使用Mysql,mongo和elasticsearch。 任何想法我怎么能开始实现这个? 我需要另一个存储空间吗? 一种方法是我可以将我的hastags存储在db中,然后在Elasticsearch中对它们进行文本搜索。 在这个领域有更多经验的人可以在这里提出什么建议?

MongoDB的Java ORM开销是多少

使用Java ORM for MongoDB的开销是多少,或者我们在基本驱动程序级别读取或写入更好? 我们将根据我们的要求添加Mongo DB。 java有几种java ORM映射工具 -morphia -spring数据 – 其他人 Morphia上一版本在一年多前发布 但Spring数据得到了积极维护。 如果我即将开始,应该使用哪一个,

无法自动配置DataSource:未指定“spring.datasource.url”

我已经使用Web,MongoDB和JPA依赖项从SPRING INITIALIZR创建了一个基本的Spring启动应用程序。 当我尝试运行spring boot应用程序时,我收到以下exception: Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled. 2018-03-25 16:27:02.807 ERROR 16256 — [ restartedMain] osbdLoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to auto-configure a DataSource: ‘spring.datasource.url’ is not specified and no embedded datasource could be auto-configured. Reason: Failed to determine a […]

使用Java驱动程序更新MongoDB中的数组

我正在使用MongoDB和官方Java驱动程序(版本2.6.3)。 我有一个包含购物清单的MongoDB集合。 购物清单具有格式 { “_id” : { “$oid” : “4e2af1f43f8de96494d5271d”} , “name” : “default” , “items” : [ { “description” : “Cheese” , “quantity” : 1 , “unit” : “kg”} , { “description” : “Water” , “quantity” : 3 , “unit” : “bottle”} ] } 现在我想使用DBCollection的update()方法将新项添加到列表中。 但无论我尝试什么,它都行不通,尽管它告诉我 { “updatedExisting” : true , “n” : 1 […]

使用Spring Security + Spring数据+ MongoDB进行身份validation

我想在MongoDB中使用Spring安全性(使用Spring数据)并从我自己的数据库中检索用户以获得spring安全性。 但是,我不能这样做,因为似乎不支持我的userservice类型。 这是我的UserService类: public class UserService { private ApplicationContext applicationContext; private MongoOperations mongoOperations; public UserService() { applicationContext = new AnnotationConfigApplicationContext(MongoConfig.class); mongoOperations = (MongoOperations) applicationContext.getBean(“mongoTemplate”); } public User find(String username) { return mongoOperations.findOne(Query.query(Criteria.where(“username”).is(username)), User.class); } } 我的SecurityConfig类: @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired UserService userService; @Autowired public void configAuthBuilder(AuthenticationManagerBuilder builder) throws Exception { […]

数据访问层的设计模式

我有一个使用数据库(MongoDB)来存储信息的应用程序。 在过去,我使用了一个充满静态方法的类来保存和检索数据,但我已经意识到这不是面向对象的,也不是未来的证据。 虽然我不太可能改变数据库,但我宁愿把一些东西与Mongo联系起来。 我还希望能够使用从数据库刷新缓存对象的选项来缓存结果,但这不是必需的,可以在其他地方完成。 我已经查看了数据访问对象,但它们似乎没有很好地定义,我找不到任何好的实现示例(使用Java或类似的语言)。 我还有很多一个关闭案例,例如找到用于完成制表符的用户名,这些用户名似乎不太适合,并且会使DAO变大和膨胀。 是否有任何设计模式可以帮助获取和保存对象而不会过于特定于数据库? 良好的实现示例将是有帮助的(最好是在Java中)。

在MySQL上使用NoSQL数据库

我有一个在Java堆栈上运行的Web应用程序(Struts 2 + Spring + Hibernate)并且在MySQL中持久存在。 我查看了NoSQL数据库,它们比RDBMS更容易推理和使用。 这是一个音乐流媒体应用程序,存储艺术家信息,并允许用户保存播放列表。 我想知道切换到NoSQL DB(CouchDB?,MongoDB?,Cassandra?)是否有任何优势(性能?,硬件成本?,简化代码?,可扩展性?)。 切换到NoSQL数据库会给您带来什么损失? 请指教。

相当于mongo的出局:减少hadoop中的选项

我正在重写MongoDB map reduce作业以改为使用Hadoop(使用mongo-hadoop连接器),但是当我将两个数据集映射到同一个集合时,它会覆盖值而不是使用它们 {reduce:“collectionName”} – 如果对于结果集和旧集合中的给定键存在文档,则将对这两个值执行reduce操作(使用指定的reduce函数),结果将写入输出集合。 如果提供了finalize函数,那么也将在reduce之后运行。 如何使用mongo-hadoop?

在上面的MongoDB 3.3.0中使用QueryBuilder和BasicDBObjectBuilder

第1部分 在Mongo 3.3.0中使用QueryBuilder跟踪查询Mongo Collection的解决方案,我尝试实现建议的方法来实现collection.find() 。 但是被不同的参数卡住了,传递了一个BasicDBObjectBuilder ,如下所示 – BasicDBObjectBuilder queryBuilder = BasicDBObjectBuilder.start(); query.getParams().entrySet().stream().forEach(entry -> queryBuilder.add(entry.getKey(), entry.getValue())); BasicDBObjectBuilder outputQuery = BasicDBObjectBuilder.start(); outputQuery.add(nameKey, 1); 这不编译: FindIterable tDocTypeList = collection.find(queryBuilder.get(), outputQuery.get()); 这也不会编译: FindIterable tDocTypeList = collection.find((Bson)queryBuilder.get(), (Bson)outputQuery.get()); 这也不会编译: org.bson.Document queryBuilder = new org.bson.Document(); query.getParams().entrySet().stream().forEach(entry -> queryBuilder.put(entry.getKey(), entry.getValue())); org.bson.Document outputQuery = new org.bson.Document(); outputQuery.put(nameKey, 1); FindIterable tDocTypeList = collection.find(queryBuilder, […]