Выполнение пользовательских запросов mongodb в Java - PullRequest
0 голосов
/ 06 марта 2019

Я хочу запускать необработанные запросы mongoDb с помощью runCommand (), которая принимает данные BSON.Ниже приведен мой код

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

Если мой запрос

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

Какими должны быть данные BSON, которые я должен передавать внутри runCommand ()?Это только

{{"by": "точка обучения"}}

или

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

И если вместо find () мне нужно использовать Insert (), как это сделать ??

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Вы не можете сделать это.Прежде всего, вам нужно получить collection

, например: MongoCollection<Document> collection = database.getCollection("test");

Получив collection, вы можете запустить необработанный запрос, используя util import com.mongodb.util.JSON;* 1009.*

это пример, который вы хотите сделать:

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 голосов
/ 06 марта 2019

Найти:

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

Вставка:

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

Я думаю, что проще всего сделать это на Java, используя Jongo (http://jongo.org/). Синтаксис очень похож на оболочку монго.

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