gpt4 book ai didi

java - 如何在 Java 中执行以字符串形式存储的 MongoDB 查询?

转载 作者:行者123 更新时间:2023-12-02 01:25:10 24 4
gpt4 key购买 nike

我对 MongoDB Java 驱动程序有点陌生,我想知道如何执行存储为字符串的查询。这是执行它们的最佳方法,还是更好的方法?

我在另一个 stackoverflow 线程上偶然发现了下面的内容,但没能从中得到任何有用的东西。输出根本不包含查询结果。

我现在正在运行的代码:

    @Test
public void testExecuteStoredQueries() {
String code = "db.getCollection('users').find({})";
final BasicDBObject command = new BasicDBObject();
String formattedCode = String.format("function() { return %s ; }", code);
System.out.println("Formatted code:");
System.out.println(formattedCode);
command.put("eval", formattedCode);
Document result = DbEngine.getInstance().getDatabase().runCommand(command);
System.out.println(result.toJson());
}

输出摘要:

{
"retval": {
"_mongo": "....",
"_db": "...",
"_collection": "...",
"_ns": "cezy.users",
"_query": {},
"_fields": null,
"_limit": 0,
"_skip": 0,
"_batchSize": 0,
"_options": 0,
"_cursor": null,
"_numReturned": 0,
"_special": false
},
"ok": 1
}

最佳答案

当我必须处理物体时,我会使用吗啡。当您从 MongoDb 检索数据时,对于长值,您将获得扩展 Json 而不是 Json 响应。解析扩展 Json 可能会很麻烦,并且可能会破坏代码。由于Gson不支持扩展Json到Json的转换。

private void createDatastore(boolean createIndexes) {
Morphia morphia = new Morphia();
morphia.map(classname.class);

datastore = morphia.createDatastore(mongoClient, databaseName);
if (createIndexes) {
datastore.ensureIndexes();
}
}

@Override
public Datastore getDatastore() {
return this.datastore;
}

@Test
public void testExecuteStoredQueries() {
String code = "db.getCollection('users').find({})";
String formattedCode = String.format("function() { return %s ; }", code);
final BasicDBObject basicObject = new BasicDBObject(new BasicDBObject("$in", formattedCode));
Query<ClassName> query = getDatastore().createQuery(<Classname>.class).filter("_eval", basicObject);
List<Classname> List = query.asList();
//if you want to access each object and perform some task
List.forEach((cursor) -> {
//perform your task
});

}

关于java - 如何在 Java 中执行以字符串形式存储的 MongoDB 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57590902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com