我想使用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()如何去做?
你不能这样做。首先,你需要得到你的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);
找:
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'}}")