标签: mongo-java-driver

使用 MongoDB java 驱动程序备份和恢复数据库

MongoDB java 驱动程序是否有可能备份和恢复数据库?

我现在的解决方案(只需执行命令):

public void makeBackUp(String path) {
    try {
        Runtime.getRuntime().exec("mongodump --out " + path);
    } catch (IOException ex) {
        Logger.getLogger(MongoDB.class.getName()).log(Level.SEVERE, null, ex);
    }

}

public void restore(String backUpPath) {
    try {
        Runtime.getRuntime().exec("mongorestore " + backUpPath);
    } catch (IOException ex) {
        Logger.getLogger(MongoDB.class.getName()).log(Level.SEVERE, null, ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢。

java mongodb mongo-java-driver

6
推荐指数
1
解决办法
3979
查看次数

findOneAndUpdate 是否以原子方式执行更新?(因为 findAndModify 在 Java MongoDB 异步驱动程序中不可用)

我正在使用 MongoDB 的 Java 异步驱动程序版本 3.6,我没有看到findAndModify作为MongoCollection类的一部分实现的(我错了吗?),最接近的是findOneAndUpdate有人可以确认此操作将自动执行吗?

我了解并发更新是如何发生的。问题非常具体,是否原子(读+写)保证 findOneAndUpdate api 的原子性。这与询问如何使用 findAndmodify 不同。

mongodb mongo-java-driver

6
推荐指数
1
解决办法
5157
查看次数

如何使用MongoClientOptions而不是MongoOptions?

我正在使用MongoOptions类及其方法

setFsync(boolean sync)

setJ(boolean safe)

setW(int val)

setWtimeout(int timeoutMS)

setSafe(boolean isSafe)

如何实现这一目标使用MongoClientOptions作为MongoOptions中depracated 蒙戈的Java驱动程序3.0.我开始了解MongoClientOptions用途

MongoClientOptions.builder()

创建一个新的Builder实例,然后追加属性.

builder mongodb mongo-java-driver

5
推荐指数
1
解决办法
5016
查看次数

MongoDb BSON以UTC时间存储日期

如果我尝试在Document(BSON)中放置一个日期字段并将其写入Mongo,BSON会将其写入UTC.例如,约会

DateTime dateTime = new DateTime("2015-07-01");
Document doc = new Document("date", dateTime.toDate());
Run Code Online (Sandbox Code Playgroud)

将被存储为

"date" : ISODate("2015-06-30T18:30:00Z")
Run Code Online (Sandbox Code Playgroud)

在蒙戈.而且,如果我使用相同的Java驱动程序检索它,我会得到它

Wed Jul 01 00:00:00 IST 2015
Run Code Online (Sandbox Code Playgroud)

大.这个没有解决方案吗?我的意思是,为什么我不能按照自己的意愿存储日期?如果我需要从另一个时区查询数据库怎么办?我会得到不同的结果?日期字段是Mongo的重要组成部分,其中包含丰富的运算符.不过,为什么Mongo不提供这种灵活性?谢谢

java date mongodb mongo-java-driver

5
推荐指数
2
解决办法
9893
查看次数

为什么mongo-java-driver不存在eq?

我在mongodb Java教程中找到了有关如何从mongo集合中查询的信息,但是eq它们对我来说不起作用!您知道如何使用mongo和java过滤集合中的文档吗?

这是我的尝试:

package Database;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class StackOverflow {

    public static void main(String[] args) {

        // insert something to mongo:
        final String URI = "mongodb://localhost:27017";
        final String DB = "StackOverflowQuestion";
        final String COLLECTION = "eqDoesntExcist";

        MongoClientURI connection = new MongoClientURI(URI);
        MongoClient mongo = new MongoClient(connection);
        MongoDatabase database = mongo.getDatabase(DB);
        MongoCollection<Document> collection =  database.getCollection(COLLECTION);

        Document doc = new Document("name", "Troy").append("height", 185);
        collection.insertOne(doc);

        doc = new …
Run Code Online (Sandbox Code Playgroud)

java mongodb-query mongo-java mongo-java-driver

5
推荐指数
1
解决办法
3727
查看次数

如何仅使用 mongo-java-driver 执行 MongoDB 本机查询 (JSON)?

如何仅使用 java-mongo-driver 触发 mongo 本机查询。

没有Spring-Data 或 EclipseLink 或 Hibernate OGM,仅使用java-mongo-driver

示例查询:

db.orders.aggregate([
   {
      $unwind: "$specs"
   },
   {
      $lookup:
         {
            from: "inventory",
            localField: "specs",
            foreignField: "size",
            as: "inventory_docs"
        }
   },
   {
      $match: { "inventory_docs": { $ne: [] } }
   }
])
Run Code Online (Sandbox Code Playgroud)

json native mongodb mongo-java-driver

5
推荐指数
1
解决办法
8995
查看次数

在 spring-boot 中更改默认的 Mongo 连接池大小

我想更改 java mongodb 驱动程序提供的连接池的默认大小,根据 mongo docs 为 100。

下面是我用来自定义连接池大小的 mongo 客户端 bean(参考这个问题)。我将 min 和 max connectionPerHost 属性都设置为 1 并运行 10 个与数据库交互的并行工作线程,以确保应用我的更改。

@Bean
public Mongo mongo() throws Exception {
    MongoClientOptions.Builder clientOptions = new MongoClientOptions.Builder();
    clientOptions.minConnectionsPerHost(1);
    clientOptions.connectionsPerHost(1);
    MongoClient mongoClient = new MongoClient(new MongoClientURI(env.getProperty("mongodbhost"), clientOptions));
    return mongoClient;
}
Run Code Online (Sandbox Code Playgroud)

然后我计算了每个工作线程的开始和结束时间点。这样我就可以确定线程正在并行工作,并且这些配置没有改变我的连接池大小。有人可以帮我解决这个问题吗?任何帮助将不胜感激!

java spring mongodb mongo-java-driver

5
推荐指数
2
解决办法
2万
查看次数

Mongo 光标在第一次获取后挂起

我正在使用聚合管道运行查找查询。在迭代从聚合执行返回的光标时,我注意到当 Mongo 发送 getMore 命令时程序挂起。我相信这个命令用于从数据库中获取下一批记录。

最初我使用 100 的批量大小进行测试,它相当快地获取 100 条记录,但是当它尝试获取下一组记录时,游标会挂起。我尝试了同样的方法,批量大小为 2,得到了相同的结果。

我正在使用 Mongo Java 驱动程序版本 3.6 和服务器 3.6.2。我还发现过去 python 驱动程序也出现过类似的问题(https://jira.mongodb.org/browse/PYTHON-276)。

过去有人经历过这种情况吗?任何的意见都将会有帮助。如果需要任何其他详细信息,请告诉我

mongodb mongo-java mongo-java-driver

5
推荐指数
0
解决办法
452
查看次数

从 MongoDB 整理中获取不需要的输出

我正在尝试以“abc”的形式对发布版本进行排序

我正在使用 mongo-java-driver

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.8.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我已经用排序规则创建了索引:

{
    "v" : 2,
    "key" : {
            "version" : 1
    },
    "name" : "version_1",
    "ns" : "db.sysversion",
    "collation" : {
            "locale" : "en",
            "caseLevel" : false,
            "caseFirst" : "off",
            "strength" : 3,
            "numericOrdering" : true,
            "alternate" : "non-ignorable",
            "maxVariable" : "punct",
            "normalization" : false,
            "backwards" : false,
            "version" : "57.1"
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经使用 java 驱动程序实现了聚合查询:

Collation collation = Collation.builder().locale("en").numericOrdering(true).build();

ArrayList<Document> response = new ArrayList<>();

ArrayList<Bson> aggregate = new ArrayList<Bson>(Arrays.asList(
  match(gt("version", "1.9.4")), …
Run Code Online (Sandbox Code Playgroud)

java collation mongodb aggregation-framework mongo-java-driver

5
推荐指数
1
解决办法
529
查看次数

如何使用 Java 在 MongoDB 中同时使用 AND 和 OR 子句执行查询?

我想使用 Java Driver 3.2 在 MongoDB 3.2 中执行查询,它同时包含$andand$or子句。

通过参考,我尝试了以下方法:

List<Document> criteria1 = new ArrayList<>();
List<Document> criteria2 = new ArrayList<>();

criteria1.add(new Document("fetchStatus", new Document("$gte", FetchStatus.PROCESSED_NLP.getID())));
criteria1.add(new Document("fetchStatus", new Document("$lte", fetchStatusParam)));
criteria1.add(new Document("episodeID", new Document("$in", episodeIDs)));

criteria2.add(new Document("fetchStatus", new Document("$eq", PROCESSED_FETCH.getID())));
criteria2.add(new Document("isFullTextRet", new Document("$eq", false)));

BasicDBList or = new BasicDBList();
or.add(criteria1);
or.add(criteria2);

DBObject query = new BasicDBObject("$or", or);
ArrayList<Document> results = dbC_Coll.find(query).into(new ArrayList<>());
Run Code Online (Sandbox Code Playgroud)

criteria1andcriteria2应该与$orwhile 内的criteria1子句连接时,$and应该应用。 …

java mongodb mongodb-query mongo-java-driver

4
推荐指数
1
解决办法
1358
查看次数