首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Driver:如何从MongoDB Driver插入任何集合

Java Driver:如何从MongoDB Driver插入任何集合
EN

Stack Overflow用户
提问于 2013-07-18 03:33:32
回答 2查看 1.6K关注 0票数 0

我有一个面向客户端的应用程序,它有一个函数,它接受2个参数作为字符串,arg1是集合,arg2是函数,arg2是对象的散列

所以在Java中我有

代码语言:javascript
复制
foo(String collection, String object):

/*and我有来自mongoDB驱动程序的db对象,我想要插入到的集合是"users“*/

代码语言:javascript
复制
MongoClient mongoClient = new MongoClient( "localhost" );
DB db = mongoClient.getDB("mydb");

这就是我遇到麻烦的地方

代码语言:javascript
复制
db.runCommand({insert : collection (? can i do this),
               ????}) <- I dont know how to right this and append the object

我之前做了一堆搜索,我找到的很多例子已经有了一个预定义的集合,但我需要对它进行抽象。

任何帮助都是非常有用的,谢谢。

更新:

我不是在寻找coll.find() java方法。我想用比shell提供的更好的输出来可视化某人的mongoDB数据。所以我正在寻找一个非常通用的字符串(db.runcommand),它可以接受作为字符串传入的insert/find/findone()。我可以使用runcommand获取集合名称,以便在基本级别上理解它,但不能将特定命令应用于任何用户定义的集合。

EN

回答 2

Stack Overflow用户

发布于 2013-07-18 05:26:42

示例:

代码语言:javascript
复制
DBCollection coll = db.getCollection("collection");

/* {
   "name" : "MongoDB",
   "type" : "database",
   "count" : 1,
   "info" : {
               x : 203,
               y : 102
             }
} */

BasicDBObject doc = new BasicDBObject("name", "MongoDB").
                              append("type", "database").
                              append("count", 1).
                              append("info", new BasicDBObject("x", 203).append("y", 102));

coll.insert(doc);
票数 1
EN

Stack Overflow用户

发布于 2013-08-11 17:12:54

这听起来就像是您在尝试编写自己的驱动程序-找出用户想要执行的命令,然后将其转换为BSON发送给MongoDB,这正是MongoDB Java驱动程序所做的事情。

您可以使用Java驱动程序和db.command(...)来运行任意命令。您必须创建一个DBObject来表示要运行的命令。

关于你的评论“我发现的示例已经有了一个预定义的集合,但我需要对它进行抽象”,@mert是正确的,因为你可以使用以下方法获得所需的集合:

代码语言:javascript
复制
DBCollection coll = db.getCollection(collection);

其中collection是在foo方法中声明的字符串变量。

但是,我不确定您希望提供的功能的安全性-您基本上是提供了一个工具,让用户可以对您的数据库运行任意命令,虽然MongoDB是一个NoSQL数据库,但这样打开它会暴露出类似的SQL Injection攻击漏洞。你的用例到底是什么?您真的想绕过并重新发明驱动程序,以允许用户在数据库上做任何他们想做的事情吗?使用严格的API编写驱动程序有两个原因: 1)帮助开发人员;2)防止人们对数据库做不正确或令人讨厌的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17708675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档