为了账号安全,请及时绑定邮箱和手机立即绑定

在 java 中运行自定义 mongodb 查询

在 java 中运行自定义 mongodb 查询

海绵宝宝撒 2022-07-20 19:24:04
我想使用接收 BSON 数据的 runCommand() 运行原始 mongoDb 查询。以下是我的代码    MongoClient mongoClient = new MongoClient();     MongoDatabase database = mongoClient.getDatabase("MyDB");     MongoCollection<Document> collection = (MongoCollection<Document>)database.runCommand(??);如果我的查询是db.mycol.find({"by":"教程点"})。我必须在 runCommand() 中传递的 BSON 数据应该是什么?难道只有{{"by":"教程点"}}或者db.mycol.find({"by":"教程点"})。如果不是 find() 我必须使用 Insert() 怎么办?
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

寻找:


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'}}")


查看完整回答
反对 回复 2022-07-20
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

举例说明它是如何工作的这是我的查询


db.getCollection('Collection').aggregate([{

    $unwind: '$somearray'

}, {

    $match: {

        _id: ObjectId("123456"),

        'somearray.type': "blabla"

    }

}, {

    $project: {

        '_id':0,

        'name': '$somearray.name',

        'phone': '$phone'

    }

}])

这是我的 Java 程序,它和查询一样


public MongoIterable < Document > GetList(String collectionName, String id) {

    MongoClient mongoClient = new MongoClient();

    MongoDatabase database = mongoClient.getDatabase("MyDB");

    MongoCollection < Document > collection = database.getCollection("collectionName");

    Document match = Document.parse("{_id: ObjectId('" + id + "'),'somearray.type': 'blabla'}");

    Document project = Document.parse("{ $project: { _id: 0,'name': '$somearray.name'},  'phone': '$phone'}");

    MongoIterable < Document > output = collection.aggregate(Arrays.asList(Aggregates.unwind("$somearray"), Aggregates.match(match), project));

    return output;

}


查看完整回答
反对 回复 2022-07-20
?
噜噜哒

TA贡献1784条经验 获得超7个赞

你不能这样做。首先你需要得到你的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);


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信