Tag: mongodb

如何查找符合多个条件的文档

我正在尝试使用操作数AND’d一起查询集合。 我有shell版本工作: db.widgets.find({color: ‘black, shape: ’round’, weight: 100}) 我无法找到Java等价物(使用本机驱动程序 )。 我尝试了各种各样的东西,但这是我最近的尝试: // Find all black, round widgets with weight 100 List criteria = new ArrayList(); criteria.add(new BasicDBObject(“color”, “black”)); criteria.add(new BasicDBObject(“shape”, “round”)); criteria.add(new BasicDBObject(“weight”, 100)); DBCursor cur = widgets.find(new BasicDBObject(“$and”, criteria)); // Get all matching widgets and put them into a list List widgetList = new […]

如何在mongodb中生成唯一对象id

当我使用Mongodb和Java时,我想在客户端生成Object id。 但是,在插入记录之前,我必须首先查询mongodb以确保ObjectId()方法生成的id是唯一的。 有没有什么方法可以生成唯一的对象ID而无需两次访问mongodb?

MongoDb通过jndi

你知道是否有可能像jndi的数据源一样在spring中设置mongodb实例? 谢谢

如何从驱动程序检查mongoDB服务器是否正在运行

我想知道,如果有办法检查mongoDB服务器是否从mongoDB的java驱动程序运行? 根据教程,我可以做到 Mongo m = new Mongo(); // or Mongo m = new Mongo( “localhost” , 27017 ); // and DB db = m.getDB( “mydb” ); 但是如何检查我可以使用这些Mongo和DB? 我在API中看不到isConnected()方法。 db.getConnector().isOpen() 返回true 我找到的唯一方法是调用db.getDatabaseNames()并捕获MongoException。 如果有一些更文明的方法?

使用Java驱动程序进行MongoDB聚合

我需要你帮助将MongoDB聚合框架与java驱动程序一起使用。 即使有这个文档 ,我也不明白如何编写我的请求。 我想从我的collections中的所有项目中获取200个最早的视图。 这是我的mongo查询(在控制台模式下工作方式如下): db.myCollection.aggregate( {$unwind : “$views”}, {$match : {“views.isActive” : true}}, {$sort : {“views.date” : 1}}, {$limit : 200}, {$project : {“_id” : 0, “url” : “$views.url”, “date” : “$views.date”}} ) 此集合中的项目具有一个或多个视图。 我的问题不是请求结果,我想知道java语法。

MongoDB的Java语法

我正在浏览MongoDB for java的介绍。 有一些示例代码可以检索集合中的所有文档。 代码有效,但我发现它有点……笨拙的缺乏一个更好的词。 我想知道是否有一个特定的原因使它成为必要。 给出的例子是: FindIterable iterable = db.getCollection(“restaurants”).find(); iterable.forEach(new Block() { @Override public void apply(final Document document) { System.out.println(document); } }); 在上面的示例中,是否有必要在forEach每次迭代中创建一个Block实例? 为什么不是更直接的事情: FindIterable iterable = db.getCollection(“restaurants”).find(); for (Document document : iterable) { System.out.println(document); }

MongoDB中的计算分组字段

对于MongoDB文档中的这个示例,如何使用MongoTemplate编写查询? db.sales.aggregate( [ { $group : { _id : { month: { $month: “$date” }, day: { $dayOfMonth: “$date” }, year: { $year: “$date” } }, totalPrice: { $sum: { $multiply: [ “$price”, “$quantity” ] } }, averageQuantity: { $avg: “$quantity” }, count: { $sum: 1 } } } ] ) 或者一般来说,我如何按计算字段分组?

使用MongoDB Java驱动程序将DBObject转换为POJO

MongoDB似乎返回了BSON / JSON对象。 我认为你肯定能够以字符串,整数等方式检索值,然后可以保存为POJO。 作为迭代列表的结果,我有一个DBObject(实例化为BasicDBObject)…(cur.next())。 除了使用某种持久性框架之外,唯一的方法是将数据放入POJO以使用JSON serlialiser / deserialiser吗? 我的方法看起来像这样: public List findByEmail(String email){ DBCollection userColl; try { userColl = Dao.getDB().getCollection(“users”); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace();} DBCursor cur = userColl.find(); List usersWithMatchEmail = new ArrayList(); while(cur.hasNext()) { // this is where I want to convert cur.next() into a […]

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

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

TransactionRequiredException执行更新/删除查询

嗨我正在使用带有spring和mongodb的hibernate JPA,我在Glassfish-4.0上运行我的应用程序。 我的服务类是 @Component public class Test { @PersistenceContext EntityManager em; EntityManagerFactory emf; @Transactional public String persist(Details details){ details.getUsername(); details.getPassword(); Query query = em.createNativeQuery(“db.details.find(username= “+details.getUsername()+”& password= “+details.getPassword()); em.getTransaction().begin(); em.persist(details); em.getTransaction().commit(); em.flush(); em.clear(); em.close(); query.executeUpdate(); System.out.println(“Sucessful!”); return “persist”; } } 还有我的spring-context.xml 我在代码中应用了一些更改,但它们没有效果。 任何人都可以帮我解决这个问题。 提前致谢。