在java中运行自定义mongodb查询

问题描述 投票:0回答:2

我想使用runCommand()接收BSON数据来运行原始的mongoDb查询。以下是我的代码

    MongoClient mongoClient = new MongoClient();
    MongoDatabase database = mongoClient.getDatabase("MyDB");
    MongoCollection<Document> collection = (MongoCollection<Document>)database.runCommand(??);        

如果我的查询是

db.mycol.find({“by”:“tutorials point”})。

什么应该是我必须在runCommand()内传递的BSON数据?它只是

{{“by”:“tutorials point”}}

要么

db.mycol.find({“by”:“tutorials point”})。

如果不是find()我必须使用Insert()如何去做?

java mongodb database-connection bson
2个回答
0
投票

你不能这样做。首先,你需要得到你的collection

像:MongoCollection<Document> collection = database.getCollection("test");

获得collection后,您可以使用util import com.mongodb.util.JSON;运行原始查询

这将是您想要做的一个例子:

MongoClient mongoClient = new MongoClient();
MongoDatabase database = mongoClient.getDatabase("MyDB");
MongoCollection<Document> collection = database.getCollection("mycol");

String rawQuery = "{\"by\": \"tutorials point\"}";

DBObject query = (DBObject) JSON.parse(rawQuery);
collection.find(query);

0
投票

找:

db.runCommand({
    find: "mycol",
    filter: { by: "tutorials point"}
})

插入:

db.runCommand({
    insert: "mycol",
    documents: [ { _id: 1, foo: "bar"} ]
})

我认为在java中最容易实现的是使用Jongo(http://jongo.org/)。语法与mongo shell非常相似。

jongo.runCommand("{find: 'mycol', filter: { by: 'tutorials point'}}")
© www.soinside.com 2019 - 2024. All rights reserved.