Tag: mongodb java

Java MongoClient无法连接到主服务器

我有一个副本集设置,1个主要(mongo1.test.com),1个辅助(mongo2.test.com)和1个仲裁(mongo3.test.com)。 当我使用MongoClient连接到它们并打印出ReplicaSetStatus时,它显示mongo1.test.com与type = Unknown无关,mongo2.test.com为type = ReplicaSetSecondary,mongo3.test.com为type = Unknown。 因为它不知道哪一个是主要的,我可以找到查询,但我无法插入或更新。 现在我不知道它是Mongo的设置还是驱动程序的配置问题。 任何建议? Mongo版本2.6.1 Java Mongo驱动程序版本2.12.1 Mongo安装在3个单独的Amazon EC2 Linux服务器上。 这是代码: MongoClientOptions.Builder optionsBuilder = MongoClientOptions.builder() .acceptableLatencyDifference(10000) .writeConcern(WriteConcern.REPLICA_ACKNOWLEDGED) .readPreference(ReadPreference.secondaryPreferred()) .connectionsPerHost(10) .connectTimeout(15000) .maxWaitTime(30000) .socketTimeout(60000) .threadsAllowedToBlockForConnectionMultiplier(1500); MongoClientOptions options = optionsBuilder.build(); MongoClient mc = new MongoClient(Arrays.asList( new ServerAddress(“mongo1.test.com”,27017), new ServerAddress(“mongo2.test.com”,27018), new ServerAddress(“mongo3.test.com”,27019)), Arrays.asList(MongoCredential.createMongoCRCredential(xxx, “admin”, xxx.toCharArray()))), options); System.out.println(mc.getRelicaSetStatus()); ReplicaSetStatus打印输出: ReplicaSetStatus { name=eeRS1, cluster=ClusterDescription{ […]

如何使用Java驱动程序访问MongoDB中嵌套在数组中的对象

{ “_id” : 0 , “prices” : [ { “type” : “house” , “price” : 10345} , { “type” : “bed” , “price” : 456.94} , { “type” : “carpet” , “price” : 900.45} , { “type” : “carpet” , “price” : 704.48} ] } 在avobe文档中,如何使用java驱动程序删除价格最低的地毯? 即,我要删除{ “type” : “carpet” , “price” : 704.48}

限制Result中的字段

我正在使用MongoDB v3.0.1和MongoDB Java Driver 3.0.0-RC1。 我有一个用户集合,其中包含“username”,“firstname”,“lastname”,“email”等字段。 现在我想选择所有用户,但只选择“username”,“firstname”和“lastname”字段。 在Mongo-Shell上,它使用db.user.find({}, { “username” : true , “firstname” : true , “lastname” : true}) 但是我怎么能用Java做呢? 我尝试了final BasicDBObject query = new BasicDBObject(“{}”, new BasicDBObject(“_id”, true)); final MongoCursor usersCursor = col.find(query) final BasicDBObject query = new BasicDBObject(“{}”, new BasicDBObject(“_id”, true)); final MongoCursor usersCursor = col.find(query) 为此,我得到一个空结果,因为它被翻译为{ “{}” : { “_id” : […]

MongoDB全文搜索索引:错误:文本索引太多,为什么?

我有一个问题,我有收集,我想将文本搜索索引设置为2个字段(描述和标题)。 但当我添加第二个索引时,我得到以下错误,文本搜索停止工作。 { “serverUsed” : “localhost/127.0.0.1:27017” , “ok” : 0.0 , “errmsg” : “too many text index for: testdb.users”} 当我删除一个索引搜索再次开始工作。 问题是什么? 一个集合仅支持一个字段的全文搜索索引???? 我在windows下使用当前版本的mongodb,我正在使用mongodb java驱动程序API。 谢谢

如何在spring-data-mongodb框架中将BigDecimal转换为Double

Spring Data MongoDB映射默认情况下将BigDecimal转换为String。 但是,我希望它们在mongodb中转换为Double。 这是后者在mongodb(比较查询/聚合查询)中对此字段进行查询所必需的。 我如何重新编译自己的转换器(BigDecimalToDouble / DoubleToBigDecimal)来执行此操作?

使用$或$ in在Java中创建mongodb查询

我正在尝试使用mongodb api编写一个java代码来创建这个mongodb查询: { “$or”: [{“prd” : {“$in” : [“1234”, “0987”]}} , {“rsin” : “3228742”}]} 这是我到目前为止使用的代码: QueryBuilder builder = new QueryBuilder(); if (builder == null) { builder = QueryBuilder.start(); } if (mongoKey.equals(“prd”)){ ArrayList vals = new ArrayList(); for (int i=0; i < prdList; i++){ vals.add(prdList.get(i)); } DBObject obj = new BasicDBObject (mongoKey, new BasicDBObject("$in", vals)); builder.or(obj); […]

并发 – 以线程安全的方式获取MongoDB生成的通过Java插入的对象的ID

获取通过Java插入的文档的Mongo生成ID的最佳方法是什么。 插入文档的Java进程是multithreading的,这意味着我们需要一些primefaces方式来插入和返回对象的ID。 另外,如果我们设置一个唯一索引,如果该对象是重复的,是否会返回一个ID? 谢谢!

在Java驱动程序中找不到MongoClient

在阅读mongo站点上有关使用Java驱动程序的所有文档时,它引用了使用MongoClient()建立连接。 它讨论了他们以前如何使用Mongo()但它已被弃用。 但是,当我下载Mongo数据库链接到的最新(或任何)版本的java驱动程序时( http://central.maven.org/maven2/org/mongodb/mongo-java-driver/ ),并加载它进入我的项目库,我无法导入com.mongodb.MongoClient,因为它不存在! 我已经尝试过他们链接到的驱动程序的六个不同版本。 我实际上可以使用已弃用的Mongo()来使我的程序正常工作,但我不想在不推荐使用的function上构建新软件。 我在这里找不到其他同样问题的人 以上是2.93版。 任何人都可以帮我找到我做错了什么或错过了吗? 我认为它是驱动程序版本,但这些是Mongo网站上的链接。 我也不认为它的使用错误,因为我可以让其他一切工作得很好。

将MongoDB集合中的数据检索到Swing JTable中

我是数据库项目的新手。 在将它连接到数据库服务器后,我不知道如何在一个摆动窗口(EDIT:JTable)内的mongodb中显示一个集合…. plz帮我解决这个问题…我试过在sql中做这个但是我不能使用mongodb JButton btnDisplay = new JButton(“display”); btnDisplay.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { // To connect to mongodb server MongoClient mongoClient = new MongoClient( “localhost” , 27017 ); // Now connect to your databases DB db = mongoClient.getDB( “test” ); System.out.println(“Connect to database successfully”); DBCollection coll = db.getCollection(“cars”); DBCursor cursor […]

关闭MongoDB Java连接

我正在尝试设计一个Mongo Db连接类,我将MongoClient设置为静态。 private static MongoClient client = null; public static DB connectToMongo() throws Exception { if (null != client) { return client.getDB(DBNAME); } client = new MongoClient(HOST,PORT); return client.getDB(DBNAME); } 我的整个Web应用程序使用上面的方法连接到Mongo,如下所示: db = MongoDBConnection.connectToMongo(); collection = db.getCollection(“collectionName”); 执行数据库操作后,我从不为MongoClient调用close连接。 连接类总是会返回相同的MongoClient实例,它永远不会关闭。我关闭的唯一内容就是游标。 每次查询数据库时是否需要关闭MongoClient? 我的上述设计有效吗?