作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 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/
我是一名优秀的程序员,十分优秀!